Цикл For в пакетном файле - не срабатывает, если имена файлов указаны в двойных кавычках - PullRequest
1 голос
/ 15 марта 2011

У меня есть фрагмент кода, написанный в пакетном файле, который ищет предопределенный файл в имени введенной папки.Это прекрасно работает, если пользователь не вводит имя папки в двойных кавычках.Но когда он входит в двойные кавычки, часть цикла for в пакетном файле завершается неудачно.

CODE:

FOR /F "usebackq delims=, skip=4" %%I IN (%A%\A.txt) DO ECHO %%I

Когда значение для A указано в двойных кавычках, оно завершается ошибкой Системе не удается найти файл F: \ KnoB "\ A.txt

1 Ответ

2 голосов
/ 15 марта 2011

Откуда вы берете имя папки?Если вы получите его из аргумента командной строки, то измените

set A=%1

на

set A=%~1

, который удаляет кавычки, если они есть.

Если вы 'читая от пользователя через set /p, затем используйте

set /P A=Folder?
for %%x in (%A%) do set A=%%~x

, который делает то же самое.

Как правило, если вы получаете значение откуда-то, где для переменных используется только один процент(например, аргументы или циклы for), затем просто используйте там ~.

Вы также хотите заключить аргумент в свой цикл for в кавычки, чтобы имена папок с пробелами не делалисьНе вызывает неприятных сюрпризов:

FOR /F "usebackq delims=, skip=4" %%I IN ("%A%\A.txt") DO ECHO %%I
...