我的批处理文件中包含以下代码:
@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
)
)
这个FIRST FOR STATEMENT循环位于文件夹D:\ Main \ Old \ Pdf \ Dom中的所有pdf文件,并比较文件夹D:\ Main \ Original \ Pdf \ Dom中的每个文件,如果它们有差异或没有。如果他们有,它会调用我的另一个批处理文件:generateReport.bat,它生成包含该2个文件差异的pdf。
现在,SECOND FOR STATEMENT会为不同的文件夹执行相同的操作:D:\ Main \ Old \ Pdf \ Int。并将文件与文件夹D:\ Main \ Original \ Pdf \ Int。
进行比较现在,问题是.....第一个FOR循环工作..它输出报告..但第二个没有。什么都没发生..没有第二个循环的输出报告。我试图为他们分别提供批处理文件。它们都有效..但我希望它们在一个批处理文件中。我在这里缺少什么?
答案 0 :(得分:2)
当通过直接调用批处理文件从另一个批处理文件启动批处理文件时,执行将转移到被调用的批处理,但不会返回给调用者。
您需要使用call generateReport.bat ....
。这样,当被调用的批处理文件结束时,执行继续在调用者