第二个FOR语句在批处理文件中不起作用

时间:2014-08-28 10:12:17

标签: windows batch-file

我的批处理文件中包含以下代码:

@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循环工作..它输出报告..但第二个没有。什么都没发生..没有第二个循环的输出报告。我试图为他们分别提供批处理文件。它们都有效..但我希望它们在一个批处理文件中。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

当通过直接调用批处理文件从另一个批处理文件启动批处理文件时,执行将转移到被调用的批处理,但不会返回给调用者。

您需要使用call generateReport.bat ....。这样,当被调用的批处理文件结束时,执行继续在调用者