如何在批处理文件间传递含空格的长文件名参数?
批处理带空格文件名调用失败的解决办法
你的问题出在参数传递的引号处理上:1.bat已经通过call 2.bat "%%f"传递了带引号的文件名,但2.bat中直接使用%1时,批处理会自动剥离参数的外层引号,导致带空格的文件名被拆分成多个参数传给tool3.exe,程序无法识别完整路径。
解决方法很简单,修改2.bat中的命令,把%1替换为"%~1":
@echo off echo this is 2.bat ... tool3.exe -p -q -v "%~1" ...
说明
%~1的作用是移除参数外层的引号(如果有的话),避免出现""file name.xls""这种嵌套引号的错误- 重新用双引号包裹后,
tool3.exe会接收到完整的带空格文件名,不会被空格拆分
1.bat的调用代码不需要修改,保持for %%f in (*.xls) do call 2.bat "%%f"即可。
内容的提问来源于stack exchange,提问作者Ferreira
相关产品推荐
相关产品推荐

