如何用带引号的字符串替换Windows批处理文件中的%% f?

时间:2014-02-06 19:27:11

标签: windows batch-file filenames filepath

我在这里做了一些初步搜索,找不到一个非常适合我在这里尝试的答案。我基本上继承了这个批处理脚本来处理复制/移动/操作一组文件的特定过程,最近提出,如果批处理文件是从一个包含空格的目录运行的话,它就不起作用。我已将问题缩小到以下块,并且无法找到替换它的正确方法:

for /r %%f in (*.ext1) do (
  echo %%f
  my_tool.exe %%f %%f.ext2
  del /f /q %%f
)

所以基本上应该发生的是,my_tool有两个参数,一个输入文件和一个输出文件。它对输入文件进行一些处理,并将其作为同一文件输出,但附加了.ext2扩展名。 (foo.ext1变为foo.ext1.ext2)

问题是%% f没有引用文件的完全限定路径,因此该工具获得的参数多于预期,而不是正确的格式。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

将参数放在双引号中,因此批处理会将它们作为2个参数传送给您的工具:

for /r %%f in (*.ext1) do (
  echo "%%f"
  my_tool.exe "%%f" "%%f.ext2"
  del /f /q "%%f"
)