escape ")" в Windows "для" команды - PullRequest
0 голосов
/ 18 января 2012

Мне нужно перебрать строки в файле. Следующая команда не работает:

set filename=c:\program files (x86)\somewhere
...
for /f "delims==" %%i in (%filename%) do echo %%i

из-за ")" в имени файла. Ошибка:

\somewhere) was unexpected at this time.

Экранирование по «^» здесь не работает, потому что мне нужно использовать переменную вместо встроенного имени файла. Как решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 18 января 2012
set filename=c:\program files (x86)\somewhere
...
for /f "USEBACKQ delims==" %%i in ("%filename%") do echo %%i

USEBACKQ позволяет использовать двойные кавычки для путей с пробелами

4 голосов
/ 18 января 2012

Поместите имя файла в двойные кавычки, но также добавьте параметр usebackq:

set filename=c:\program files (x86)\somewhere
for /f "usebackq delims==" %%i in ("%filename%") do echo %%i

С выхода FOR /?:

usebackq        - specifies that the new semantics are in force,
                  where a back quoted string is executed as a
                  command and a single quoted string is a
                  literal string command and allows the use of
                  double quotes to quote file names in
                  file-set.
...