if 和 else 批量我已经尝试了很多次来让这个工作,但我似乎无法找到问题任何人都可以帮忙吗?
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
if 和 else 批量我已经尝试了很多次来让这个工作,但我似乎无法找到问题任何人都可以帮忙吗?
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
你应该看说明书!
if /?
描述了括号必须在ELSE
is 所在的同一行。
FOR /R "C:\Program Files" %%a IN (.) DO (
if exist "%%~a\yes.txt" (
echo yes
) else (
md Pictures
)
)
在 cmd shell 的语法中,命令以行尾结束,除非仍然有一个“()”打开。因此,在您上面的代码中,该行
FOR /R "C:\Program Files" %%a IN (.) DO
是完整的for
循环 - 你正在循环并且DO
什么都没有。要将FOR
命令继续到另一行,您需要添加一个“(”:
FOR /R "C:\Program Files" %%a IN (.) DO (
现在您可以使用您的If
语句继续该命令。你的If
陈述也是如此。你输入了
if exist "%%~a\yes.txt" (
echo yes
) else
因此,带有 的行末尾的“(”将其IF
继续到带有 的行上的匹配“)” ,但在同一行else
之后没有“(” ,您的命令将终止,并且在语法上不正确。else
if
但我不确定你的代码是否真的在做你想做的事。它将尝试在您执行命令的任何目录中创建目录“Pictures” ,并且每次它找到不包含文件的“C:\ Program files”的某些子目录时,它都会尝试重复创建它“yes.txt”(这将是很多目录)。因此,您将在第一次创建“tmp”,然后所有后续尝试只会导致错误消息。
这里的关键是循环会将目录名称分配给 %%a,但它不会对该目录执行“CD”,因此您仍然“在”开始循环的目录中。
你到底想做什么?