如果和其他批次我已经尝试了很多时间让这个工作,但我似乎无法找到问题可以有人帮忙吗?
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
答案 0 :(得分:3)
您应该阅读手册!
if /?
描述了括号必须与ELSE
所在的同一行。
FOR /R "C:\Program Files" %%a IN (.) DO (
if exist "%%~a\yes.txt" (
echo yes
) else (
md Pictures
)
)
答案 1 :(得分:1)
在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
因此{(1}}行末尾的“(”)将其继续显示在IF
行上的匹配“)”,但没有“{”在else
之后{1}}在同一行,else
命令终止,语法不正确。
但我不确定你的代码是否真的按照你的意愿行事。它将尝试在您执行命令的任何目录中创建目录“Pictures”,并且每次找到“C:\ Program files”的某个子目录时,它将尝试重复创建它。 “它不包含文件”yes.txt“(这将是许多目录)。因此,您将在第一次创建“tmp”,然后所有后续尝试都将导致错误消息。
这里的关键是循环将目录名称分配给%% a,但它不会对该目录执行“CD”,因此您仍然在“目录”中你开始循环的地方。
你究竟想做什么?