循环遍历批处理脚本中的列表项

时间:2018-05-27 14:38:20

标签: windows batch-file

我正在尝试检查是否存在一组目录。我正在使用批处理脚本。

我使用“for”循环遍历目录列表并检查该目录是否存在:

set list=%HOME%\bin ^
%HOME%\tmp

for %%A in (%list%) do (
    if not exist %%A (
       echo %%A
    )
)

问题是我收到错误:'C:\ mn \ home \ bin'未被识别为内部或外部命令,可操作程序或批处理文件。

如何使for循环避免执行列表中的项目?

由于

1 个答案:

答案 0 :(得分:1)

将列表项放在一行中,
如果它们可能包含用双引号括起来的空格:set list="%HOME%\bin" "%HOME%\tmp"
按空格,逗号,分号,制表符或等号分隔项目。

@Echo off
Set "Home=C:\mn\home"
set list="%HOME%\bin\",^
 "%HOME%\tmp\"

for %%A in (%list%) do (
    if not exist "%%~A" (
       echo doesn't exist %%A
    )
)

示例输出:

> SO_5053242.cmd
doesn't exist "C:\mn\home\bin\"
doesn't exist "C:\mn\home\tmp\"

将您的商品直接放入其中可能会更容易:

@Echo off
Set "Home=C:\mn\home"

for %%A in (
"%HOME%\bin\"
"%HOME%\tmp\"
"%HOME%\blahtmp\"
) do (
    if not exist "%%~A" (
       echo doesn't exist %%A
    )
)