我正在使用批处理脚本,我有一个像这样的输入变量:
~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'无法识别为内部或外部命令, 可操作程序或批处理文件。
答案 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是分隔符,则忽略它。