windows - 使用/R 标志将批处理脚本的输出放入正确的子目录中

标签 windows windows-7 batch-file

我目前面临的问题是我需要在每个子目录中处理文件,我正在使用这样的 for 循环:

for /R %%x in (*.dat) do tool.exe -c -f -e "%%x"

现在它确实处理了除工具输出文件之外的所有内容,并且该文件始终位于启动批处理脚本的目录中,而不是原始文件所在的目录中。 我尝试了很多方法,比如使用 %CD% 作为该工具的输出目录选项,但看起来该工具不太喜欢那样,只是给出了错误。

我正在寻找一个通用的解决方案,因为我现在在使用很多 CLI 工具时遇到了这个问题。

最佳答案

我迟到了,但是,补充 Andriy 的回答,您可以通过组合两个 FOR 循环来简化 BAT,这可能会稍微更有效,也更清晰。

for /D /R %%d in (*) do (
  pushd %%d
  for %%x in (*.dat) do tool.exe -c -f -e "%%x"
  popd
)

作为一个额外的好处,这个版本将解决主循环引用不同驱动器的情况(在这个特定的 OP 问题上不是这种情况)并且具有在每次迭代中恢复当前目录的相对值(value),如果循环中包含其他命令,这也可能不太重要。

关于windows - 使用/R 标志将批处理脚本的输出放入正确的子目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019464/

相关文章:

java - Windows 64 中的 javaw.exe 进程是否消耗更多内存?

java - 我需要在 Jenkins 中运行什么 Windows 批处理命令才能启动脚本?

c++ - 为什么我的 VS2010 native C++ 应用程序不会突然启动,并给出并排错误?

windows - 编写包含反斜杠的文本字符串,变量赋值出现问题

windows - 使用记事本打开所有 .cmd 文件

windows - SNMP - 从进程中获取信息

c++ - 编写音频源过滤器用作 Lync 麦克风

git commit error with sublime text 2

windows-7 - 路由表中的环回

batch-file - 在下一个批处理脚本运行中使用由批处理脚本设置的环境变量