如果和其他批處理我已經嘗試了很多時間來得到這個工作,但我似乎無法找到任何人都可以幫助的問題?如果和其他錯誤BATCH
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
如果和其他批處理我已經嘗試了很多時間來得到這個工作,但我似乎無法找到任何人都可以幫助的問題?如果和其他錯誤BATCH
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
)
)
在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
命令被終止,語法錯誤。
但我不確定你的代碼是否真的在做你想要的。它會嘗試在執行命令的任何目錄中創建目錄「圖片」,並且它將嘗試重複創建它,每次找到某個不包含「C:\ Program files」的子目錄時一個文件「yes.txt」(這將是很多目錄)。所以你會第一次創建「tmp」,然後所有後續的嘗試都會導致錯誤信息。
這裏的關鍵是循環將目錄名稱分配給%% a,,但它不會對該目錄執行「CD」,因此您仍然位於啓動循環。
你究竟在做什麼?