2012-08-22 57 views
0

如果和其他批處理我已經嘗試了很多時間來得到這個工作,但我似乎無法找到任何人都可以幫助的問題?如果和其他錯誤BATCH

FOR /R "C:\Program Files" %%a IN (.) DO 
if exist "%%~a\yes.txt" (
    echo yes 
) else 
(
    md Pictures 
) 

回答

3

您應該閱讀手冊!
if /?

描述了括號必須在ELSE所在的同一行上。

FOR /R "C:\Program Files" %%a IN (.) DO (
    if exist "%%~a\yes.txt" (
    echo yes 
) else (
    md Pictures 
) 
) 
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 

等等「(」在與IF行結束它繼續匹配的「)」關於與else行,但沒有「(下稱」 else在同一行後,您if命令被終止,語法錯誤。

但我不確定你的代碼是否真的在做你想要的。它會嘗試在執行命令的任何目錄中創建目錄「圖片」,並且它將嘗試重複創建它,每次找到某個不包含「C:\ Program files」的子目錄時一個文件「yes.txt」(這將是很多目錄)。所以你會第一次創建「tmp」,然後所有後續的嘗試都會導致錯誤信息。

這裏的關鍵是循環將目錄名稱分配給%% a,,但它不會對該目錄執行「CD」,因此您仍然位於啓動循環。

你究竟在做什麼?