【问题标题】:How to execute a windows batch command recursively?如何递归执行 Windows 批处理命令?
【发布时间】:2010-01-11 18:21:04
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

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

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

"%~dp0myrename.cmd"

【讨论】:

  • 最后一位是什么意思?
  • @VirgilIerubino:最后一点是什么? %~dp0的部分?有关说明,请参阅 help for
猜你喜欢
  • 2012-08-30
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多