我在这里做了一些初步搜索,找不到一个非常适合我在这里尝试的答案。我基本上继承了这个批处理脚本来处理复制/移动/操作一组文件的特定过程,最近提出,如果批处理文件是从一个包含空格的目录运行的话,它就不起作用。我已将问题缩小到以下块,并且无法找到替换它的正确方法:
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没有引用文件的完全限定路径,因此该工具获得的参数多于预期,而不是正确的格式。任何建议都将不胜感激。
答案 0 :(得分:1)
将参数放在双引号中,因此批处理会将它们作为2个参数传送给您的工具:
for /r %%f in (*.ext1) do (
echo "%%f"
my_tool.exe "%%f" "%%f.ext2"
del /f /q "%%f"
)