批处理文件:输入条形码字符串替换

问题描述:

我使用批处理脚本,我有一个这样的输入变量:批处理文件:输入条形码字符串替换

~zon|123456789~~zln|12~ 

输入后,我得到这个消息:“|在这个时候意外的。”

我应该如何使用字符串替换有如下的输出结果:

123456789-12 

我试着用这一个,但它不工作。 使用日期格式是好的,但。 你有什么想法吗?

set path=~zon|123456789~~zln|12~ 
echo the variable is "%path:~4,8%" 
pause 

输出:

C:>设定路径=〜ZON | 123456789 ~~ ZLN | 12〜

'23897975 ~~万' 不被识别为内部或外部的命令, 可操作的程序或批处理文件。

因为|是一个重定向命令,并且比设置的prio更高 - 所以你必须使用像下面的引号。 由于存在这样的Windows环境变量,因此设置名称为path的变量并不是个好主意。您可以使用由~|分割字符串:

set "p=~zon|123456789~~zln|12~" 
for /f "tokens=2 delims=|~" %%a in ("%p%") do echo %%a 

与子字符串:

echo "%p:~5,9%" 

编辑:

得到其他两个数字:

set "p=~zon|EightDigits~~zln|OneOrTwoDigits~" 
for /f "tokens=2,4 delims=|~" %%a in ("%p%") do echo %%a-%%b 
+0

太好了。当前输出为123456789. 有些情况下可能是一位或两位数的“12”。 我应该如何写才能得到这个输出? 123456789-12(“ - ”后的后两位数字) 123456789-8(在“ - ”后面的最后一位数) – virtualixer

+0

条形码的格式是〜zon | EightDigits ~~ zln | OneOrTwoDigits〜 – virtualixer

+0

@virtualixer - 检查我的编辑。 – npocmaka

set "p=~zon|123456789~~zln|12~" 
for /f "tokens=2,4 delims=|~" %%a in ("%p%") do echo %%a-%%b 

符号化是这样的:

~zon|123456789~~zln|12~ 
# 1 # 2 ## 3 #4 # 

# =定界符;连续的分隔符被视为一个。如果第一个字符是分隔符,它将被忽略。

+0

工作正常!谢谢。我有另一个。 我应该如何传递字符串%% a - %% b来执行下面的IF语句? IF %%一个 - %% b EQU无( ((ECHO)和ECHO你不应该让它空)(ECHO)暂停和GOTO:!菜单 ) ELSE (@ ECHO %% a - %% b%日期:〜4,2%/%日期:〜7,2%/%日期:〜10,4%_%时间:〜0.2%:%时间:〜3.2%: %time:〜6,2%>> C:\ tokenized.txt ) – virtualixer

+0

生成的字符串至少是破折号 - 因为我们明确添加了该字符串。所以测试'如果“%% a - %% b”==“ - ”回显空输入“ – Stephan

+0

它只是绕过整个IF语句行当我尝试。有什么想法吗? – virtualixer