【发布时间】:2014-05-28 13:39:41
【问题描述】:
我有以下字符串:
AAA:BBB, CCC:DDD, EEE:FFF
我需要将 BBB、DDD 和 FFF 提取到单独的变量中,因为我需要为每个变量运行一次另一个脚本,并将变量作为参数。在这个例子中,我需要运行:
script.cmd BBB
script.cmd DDD
script.cmd FFF
字符串可以只是“AAA:BBB”,也可以有 10 种格式,最多为“YYY:ZZZ”。 我的思路是用字符串做一个数组。首先,我将删除初始字符串中的所有最终空格,然后用逗号分隔元素。所以结果是:
Array[0]=AAA:BBB
Array[1]=CCC:DDD
.......
Array[n]=YYY:ZZZ
之后,我可以取出每个元素并尝试删除“*:”,并留下:
Array[0]=BBB
Array[1]=DDD
.......
Array[n]=ZZZ
然后我可以使用这些作为参数。我做了以下事情:
rem -- set string
set STRING=AAA:BBB, CCC:DDD, EEE:FFF
rem -- trim eventual spaces in STRING
set STRING=%STRING: =%
rem -- replaces comas with spaces to be able to create array
set STRING=%STRING:,= %
setlocal ENABLEDELAYEDEXPANSION
rem -- split string into array
set index=0
for %%A in (%STRING%) do (
set Array[!index!] = %%A
set /a index += 1
)
拆分效果很好。但这就是我卡住的地方。在过去的几个小时里,我尝试获取数组的每个元素并删除冒号之前的所有字符,包括冒号。不知道我做错了什么,输出很奇怪。我尝试使用用于拆分字符串的相同 for 来运行带有参数的脚本。拆分完成后,我尝试使用另一个 for 。没有任何效果。
好像是命令:
set string=%string:*:=%
.. 出于某种原因对数组的每个元素都不起作用。输出很奇怪,类似于 "stringn=%=%" 。我不明白为什么。相同的命令适用于不是数组元素的其他变量。
有人有什么建议吗?非常感谢。
【问题讨论】:
标签: arrays string batch-file substring