【问题标题】:How can I replace %%f in a Windows batch file with a quoted string?如何用带引号的字符串替换 Windows 批处理文件中的 %%f?
【发布时间】:2014-03-03 22:38:06
【问题描述】:

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

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 没有引用文件的完全限定路径,因此该工具获取的参数比预期的要多,而且格式不正确。任何建议将不胜感激。

【问题讨论】:

    标签: windows batch-file filenames filepath


    【解决方案1】:

    将参数放在双引号中,以便批处理将它们作为 2 个参数传输到您的工具:

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

    【讨论】:

    • 对不起,我是一个新帐户,所以不能投票给你的答案,但这就是我要找的。非常感谢!
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 2011-02-15
    • 2010-10-22
    • 2018-07-17
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多