2010-01-11 146 views
8

例如,您在批处理文件中有重命名命令,并且您想要在当前目录和所有子目录上执行该文件。如何递归执行windows批处理命令?

+0

你有具体的例子吗? – 2010-01-11 18:31:24

+1

改为使用PowerShell。 :-) – 2010-02-04 19:14:13

+0

另请参阅:http://stackoverflow.com/a/25381530/99777 – joeytwiddle 2016-06-06 01:34:20

回答

16

假设你的批被命名为类似myrename.cmd,那么你可以很容易地做到以下几点:

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

第一行会运行当前目录,for循环将递归(/r)在所有迭代目录(/d)并在圆括号中执行该部分。我们在里面做的是将目录更改为我们当前正在迭代的目录pushd,它具有很好的属性,您可以使用popd撤消目录更改 - 然后运行该命令,然后该命令将运行在目录中我们只是转向。

这假设批处于路径中的某处。如果没有,只是碰巧躺在上面的批处理文件所在的位置,那么你可以使用

"%~dp0myrename.cmd" 
+0

非常感谢你 – 2010-01-11 22:42:14

+0

最后一点是什么意思? – 2017-03-01 17:05:13

+0

@VirgilIerubino:最后一点?带有'%〜dp0'的部分?请参阅'help for'获取解释。 – Joey 2017-03-01 17:45:59

相关问题