【发布时间】:2010-01-11 18:21:04
【问题描述】:
例如,您在批处理文件中有一个重命名命令,并且您希望在当前目录和所有子目录中执行该文件。
【问题讨论】:
-
你有具体的例子吗?
标签: windows shell command-line batch-file cmd
例如,您在批处理文件中有一个重命名命令,并且您希望在当前目录和所有子目录中执行该文件。
【问题讨论】:
标签: windows shell command-line batch-file cmd
假设您的批次被命名为myrename.cmd,那么您可以轻松地执行以下操作:
call myrename.cmd
for /r /d %%x in (*) do (
pushd "%%x"
call myrename.cmd
popd
)
第一行将针对当前目录运行它,for 循环将递归 (/r) 遍历所有目录 (/d) 并执行括号中的部分。我们在其中所做的是将目录更改为我们当前正在使用pushd 迭代的目录——它具有很好的属性,您可以使用popd 撤消该目录更改——然后运行命令,然后将是在我们刚刚切换到的目录中运行。
这假定批处理位于路径中的某个位置。如果它没有并且恰好位于上面的批处理文件所在的位置,那么您可以使用
"%~dp0myrename.cmd"
【讨论】:
%~dp0的部分?有关说明,请参阅 help for。