带有delims的批处理文件循环

时间:2014-02-20 16:14:38

标签: windows batch-file

我只获得了1项:添加 - RegistrationPool 以下的for循环。我做错了什么?如何迭代到下一个标记/项?

for /F "delims=!" %%i in ("RegistrationPool"!"SubSystemService") DO (
    echo Adding - %%i
    echo.

)

2 个答案:

答案 0 :(得分:1)

如果您使用逗号或空格而不是感叹号,则只需使用:

for %%i in (RegistrationPool,SubSystemService) DO (
    echo testing %%i
    echo.
)

答案 1 :(得分:0)

要拆分字符串,您需要一个字符串来拆分

for /F "delims=!" %%i in ("RegistrationPool!SubSystemService") DO (
    echo Adding - %%i
)

但是这仍然只会打印一个“添加”行。为什么?。 for /f将遍历文件/行,每行执行do正文一次的内容。你只有一行(有两个令牌,但有一行)所以只有一次迭代。

您可以将第二个元素作为第二个标记访问

for /F "tokens=1,2 delims=!" %%i in ("RegistrationPool!SubSystemService") DO (
    echo Adding - %%i
    echo Adding - %%j
)

第一个令牌存储在指示的可替换参数中,以及按字母顺序存储以下令牌。

但是,如果需要迭代列表,那么正确的构造就是

for %%i in ("RegistrationPool" "SubSystemService") DO (
    echo Adding - %%i
)

现在,有一个for命令迭代元素列表。两个元素,两个迭代,两个“添加”行。