如何递归执行Windows批处理命令?

Bas*_*eeb 9 windows shell command-line cmd batch-file

例如,批处理文件中有重命名命令,并且您希望在当前目录和所有子目录上执行该文件.

Joe*_*oey 16

假设您的批次名称类似myrename.cmd,那么您可以轻松地执行以下操作:

call myrename.cmd
for /r /d %%x in (*) do (
    pushd "%%x"
    call myrename.cmd
    popd
)
Run Code Online (Sandbox Code Playgroud)

第一行将为当前目录运行它,for循环将/r在所有目录(/d)上递归迭代()并执行括号中的部分.我们在其中所做的是将目录更改为我们当前正在迭代的目录pushd- 具有可以撤消该目录的良好属性popd- 然后运行命令,然后将在我们刚刚运行的目录中运行切换到.

这假设批处理位于路径中的某个位置.如果它没有并且恰好位于上面的批处理文件所在的位置,那么您可以使用

"%~dp0myrename.cmd"
Run Code Online (Sandbox Code Playgroud)