Ответ 1
Добавьте CALL
перед именем программы:
FOR /F "usebackq" %%A IN (`CALL "C:\Folder With Spaces\command.exe" "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
Это проблема, с которой я сталкиваюсь:
@ECHO OFF
REM If this batch file is run in the same directory as "command.exe" then the
REM following line will work.
FOR /F "usebackq" %%A IN (`command.exe "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
REM The following line does not work no matter where this batch file is run.
FOR /F "usebackq" %%A IN (`"C:\Folder With Spaces\command.exe" "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
Я хотел бы сохранить этот пакетный файл везде, где захочу, и не заставлять его хранить его в той же папке, что и файл command.exe. Любые предложения?
Добавьте CALL
перед именем программы:
FOR /F "usebackq" %%A IN (`CALL "C:\Folder With Spaces\command.exe" "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
Тройка call
Andriy M умна и отлично работает, но я попытался понять проблему здесь.
Эта проблема вызвана cmd.exe
, как вы можете прочитать в cmd /help
....
первая и последняя цитата будут удалены, когда есть не совсем две кавычки в строке.
...
Итак, есть и другое решение, просто добавив два дополнительных кавычки
FOR /F "usebackq=" %%A IN (`""C:\Folder Space\myCmd.exe" "Param space""`) DO (
ECHO %%A
)
Осторожно:
Использование "вызова" (как показано Андреем М) представляется самым безопасным вариантом.
Я нашел случай, когда проблема с добавлением двойных кавычек в начале и конце (как предложено как возможное решение jeb) имеет проблему.
Проблема:
for /f "delims=" %%i in ('""C:\path with spaces\hello.bat" "filename with an & ampersand.jpg""') do ( echo output=%%i )
Выход cmd.exe: & was unexpected at this time.
Решение:
for /f "delims=" %%i in ('call "C:\path with spaces\hello.bat" "filename with an & ampersand.jpg"') do ( echo output=%%i )