Windows 在批处理脚本中的列表项上循环
我试图检查一组目录是否存在。我正在使用批处理脚本 我使用for循环遍历目录列表,并检查此目录是否存在: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循环避免执行列表中的项 谢谢将列表项放在一行, 如果它们可能包含
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
)
)