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

时间:2010-01-11 18:21:04

标签: windows shell command-line batch-file cmd

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

1 个答案:

答案 0 :(得分:16)

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

call myrename.cmd
for /r /d %%x in (*) do (
    pushd "%%x"
    call myrename.cmd
    popd
)

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

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

"%~dp0myrename.cmd"