Windows Batch:使用包含for操作内部空格的完全限定路径调用exe

时间:2015-12-05 20:14:30

标签: batch-file

请考虑以下代码段:

for /f "tokens=1,2 delims==" %%A in ('%~dp0otrtool\otrtool.exe "%~1" 2^>^&1') do echo %%A

如果从没有空格的路径调用脚本,则echo工作正常。为了使其适用于具有空格的路径,我在.exe:

周围添加了引号
for /f "tokens=1,2 delims==" %%A in ('"%~dp0otrtool\otrtool.exe" "%~1" 2^>^&1') do echo %%A

现在我的echo输出错误消息Der Befehl "d:\Scripts\OTRTools\otrtool\otrtool.exe" "test" ist entweder falsch geschrieben oder konnte nicht gefunden werden.,这意味着"错误的命令或文件名"。如果我在没有for

的情况下调用该行
"%~dp0otrtool\otrtool.exe" "%~1" 2^>^&1

它工作正常。知道如何修复for-line吗?

2 个答案:

答案 0 :(得分:0)

我尝试通过在d:\ myFolder和另一个ind c:\ Program Files \文件夹中编写一个名为hello.bat的批处理来重现您的问题:

for /f "tokens=1,2 delims==" %%A in ('"%~dp0notepad++.exe.lnk" %~1 2^>^&1') do echo %%A

我在两个目录中都启动了hello.bat,我可以通过让#34;"来重现你的错误。约%~1但是一旦我将它们删除它对我有用。

答案 1 :(得分:0)

for /f "tokens=1,2 delims==" %%A in ('CALL "%~dp0otrtool\otrtool.exe" "%~1" 2^>^&1') do echo %%A

插入call似乎可以解决问题。