2011-07-20 53 views
1

让我有一个批处理程序:问题与批量报价文件名

SET FOO=C:\temp\%1 
bar.exe %FOO% 

当我把它用双引号的文件名作为参数,我得到中间这些报价;而实际上阻止其他程序正常工作:

> fail.bat "aa bb.jpg" 
SET FOO=C:\temp\"aa bb.jpg" 
> bar.exe C:\temp\"aa bb.jpg" 
cannot find file 

如何获得变量包含正确的值“C:\ TEMP \ AA bb.jpg”?

回答

2

您可以使用%~1来代替,这将从参数中删除引号。
然后你的代码应该看起来像

SET FOO="C:\temp\%~1" 
bar.exe %FOO% 
0

尝试删除驱动器号,因为我在过去遇到过问题。如果整个路径名不仅包含空格的单个项目而且还包含引号,它也可以工作吗?