运行所有子目录中的所有批处理脚本

运行所有子目录中的所有批处理脚本

我想x.bat在所有递归子目录中自动运行所有内容:

C:\test
|   
+---folder1
|      x.bat
|       
+---folder2
|      x.bat
|       
+---folder3
.      x.bat
. 
.----foldern
       x.bat

可以依次或者同时进行,无所谓。

我有这个:

@echo off
for /r /d %%x in ("*") do (
    pushd "%%x"    
    call "x.bat"
    popd
)
pause

但它只能x.bat运行folder1

答案1

您的代码在我的计算机上完美运行。

我用你的 test.bat 创建了一个测试目录和两个包含 x.bat 的测试目录:

C:\tmp\865348>dir /s /b
   C:\tmp\865348\f1
   C:\tmp\865348\f2
   C:\tmp\865348\test.bat
   C:\tmp\865348\f1\x.bat
   C:\tmp\865348\f2\x.bat

这些文件包含:

C:\tmp\865348>type test.bat
   @echo off
   for /r /d %%x in ("*") do (
       pushd "%%x"
       call "x.bat"
       popd
   )
   pause

C:\tmp\865348>type f1\x.bat
   echo "I'm f1"

C:\tmp\865348>type f2\x.bat
   echo "I'm f2"

现在运行它:

C:\tmp\865348>test.bat
   "I'm f1"
   "I'm f2"
   Press any key to continue . . .

对我来说没问题。我想说问题出在子目录中的 x.bat 中。确定你没有在所有的子目录中都硬编码“folder1”吗?

相关内容