2014-08-28 88 views
0

我有這樣的代碼在我的批處理文件:第二FOR語句不會在批處理文件工作

@ECHO OFF 

for /f %%a IN ('dir /b "D:\Main\Old\Pdf\Dom\*.pdf"') do (
fc D:\Main\Old\Pdf\Dom\%%~a D:\Main\Original\Pdf\Dom\%%~a >nul && (
    echo Identical 
) || (
    generateReport.bat "D:\Main\Old\Pdf\Dom\%%~a" "D:\Main\Original\Pdf\Dom\%%~a" D:\OUTPUT\%%~a 
) 
) 

for /f %%c IN ('dir /b "D:\Main\Old\Pdf\Int\*.pdf"') do (
fc D:\Main\Old\Pdf\Int\%%~c D:\Main\Original\Pdf\Int\%%~c >nul && (
    echo Identical 
) || (
    generateReport.bat "D:\Main\Old\Pdf\Int\%%~c" "D:\Main\Original\Pdf\Int\%%~c" D:\OUTPUT\%%~c 

) 
) 

這首for語句循環對位於文件夾d的所有PDF文件:\ MAIN \老\ PDF閱讀器\ Dom,然後比較文件夾D:\ Main \ Original \ Pdf \ Dom中的每個文件,如果它們有差異或無。如果他們有,它會調用我的另一個批處理文件:generateReport.bat生成pdf,其中包含2個文件的差異。

現在,SECOND FOR STATEMENT執行相同的操作,但對於不同的文件夾循環:D:\ Main \ Old \ Pdf \ Int。並將文件與文件夾D:\ Main \ Original \ Pdf \ Int進行比較。

現在,問題是.....第一個FOR循環工作..它輸出報告..但第二個不是。什麼也沒有發生。沒有第二個循環的輸出報告。我試圖爲他們單獨的批處理文件。他們兩個都可以工作。但是我希望他們在一個批處理文件中。我在這裏錯過了什麼?

回答

2

當通過直接調用批處理文件從另一個批處理文件啓動批處理文件時,執行被轉移到被調用批處理,但不返回給調用者。您可能需要使用call generateReport.bat ....。這樣,當調用的批處理文件結束時,執行繼續在調用者