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

时间:2016-03-02 05:06:55

标签: batch-file input user-input barcode barcode-scanner

我正在使用批处理脚本,我有一个像这样的输入变量:

~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 ~~ mln'无法识别为内部或外部命令,   可操作程序或批处理文件。

2 个答案:

答案 0 :(得分:2)

因为|是重定向命令并且prio高于set - 所以你必须使用像bellow这样的引号。 设置名称为path的变量并不是一个好主意,因为有这样的Windows环境变量。您可以使用for来将字符串拆分为~|

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

答案 1 :(得分:2)

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 #

# =分隔符;连续分隔符被视为一个。如果第一个char是分隔符,则忽略它。