Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在批处理脚本中的列表项上循环_Windows_Batch File - Fatal编程技术网

Windows 在批处理脚本中的列表项上循环

Windows 在批处理脚本中的列表项上循环,windows,batch-file,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循环避免执行列表中的项 谢谢将列表项放在一行, 如果它们可能包含

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

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

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

for %%A in (%list%) do (
    if not exist %%A (
       echo %%A
    )
)
问题是我遇到了一个错误:“C:\mn\home\bin”未被识别为内部或外部命令、可操作程序或批处理文件

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


谢谢

将列表项放在一行, 如果它们可能包含空格,请用双引号括起来: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\"
将您的项目直接放入中可能更容易:


它在这里运行,变量%home%包含什么?在一个打开的cmd窗口发布了一套HomeMorry,我刚刚意识到它做了双重引用,改变了我的答案。请再试一次。它仍然给我同样的错误!即使在执行for循环之前,from set list命令也会发出此错误。使用多行时,请确保连续行至少以空格开头,否则^将转义大小写中的第一个字符!非常感谢;现在可以使用您编辑的答案进行操作。要检查目录是否存在,您应该使用尾随的反斜杠,例如,如果不存在%%a\I无法重现您描述的错误;无论如何,很难做到,因为你没有告诉我们所有变量的确切值,比如HOME。。。
@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
    )
)