Пакетный файл: FOR / F не работает, если путь содержит пробелы - PullRequest
14 голосов
/ 25 июня 2011

Это проблема, с которой я столкнулся:

@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.Есть предложения?

Ответы [ 3 ]

27 голосов
/ 25 июня 2011

Добавить CALL перед названием программы:

FOR /F "usebackq" %%A IN (`<b><i>CALL</i></b> "C:\Folder With Spaces\command.exe" "C:\File Being Passed as a Parameter.txt"`) DO ECHO %%A
13 голосов
/ 30 июля 2011

Уловка call Andriy M умна и отлично работает, но я попытался понять проблему здесь.

Эта проблема вызвана cmd.exe, как вы можете прочитать на cmd /help

....
первая и последняя цитата будут удалены, когда есть не совсем две кавычки в строке.
...

Таким образом, есть и другое решение с простым добавлением двух дополнительных кавычек

FOR /F "usebackq=" %%A IN (`""C:\Folder Space\myCmd.exe" "Param space""`) DO (
    ECHO %%A
)
2 голосов
/ 09 мая 2015

Тщательное:

Использование 'call' (как показано Андреем М) кажется наиболее безопасным вариантом.

Я обнаружил случай, когда добавление начальных и конечных двойных кавычек (как предлагается в качестве возможного решения от 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 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...