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

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

你有具体的例子吗? - Rubens Farias
参见:https://dev59.com/kWoy5IYBdhLWcg3wq_3O#25381530 - joeytwiddle
可能是Windows批处理文件循环遍历目录以处理文件?的重复问题。 - Robert Pollak
1个回答

17

假设你的批处理文件命名为myrename.cmd,那么你可以轻松地执行以下操作:

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

第一行会在当前目录运行,for循环将递归(/r)遍历所有目录(/d)并执行括号中的内容。我们所做的是使用pushd将目录更改为当前正在迭代的目录——这样你就可以用popd撤消目录更改——然后运行命令,它将在我们刚刚切换到的目录中运行。

这假设批处理文件在路径中的某个地方。如果不是,并且恰好位于上面批处理文件所在的位置,则可以使用以下方法:

"%~dp0myrename.cmd"

最后一位是什么意思? - Virgil Ierubino
@VirgilIerubino:最后一位是什么?是%~dp0这部分吗?请参考help for以获取解释。 - Joey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接