пакетный файл для цикла с пробелами в имени dir - PullRequest
51 голосов
/ 05 апреля 2011

Как мне изменить это:

for /f %%a IN ('dir /b /s build\release\*.dll') do echo "%%a"

работать, когда путь содержит пробелы?

Например, если это запускается с

c:\my folder with spaces

будет эхо:

c:\my

Спасибо

Ответы [ 3 ]

77 голосов
/ 05 апреля 2011

Вам необходимо использовать:

for /f "delims=" %%a IN ('dir /b /s build\release\*.dll') do echo "%%a"

Это переопределяет разделители по умолчанию, которые являются TAB и SPACE

30 голосов
/ 27 марта 2012

Я справился с этим, добавив "тип" и поместив двойные кавычки вокруг пути в предложении IN

FOR /F %%A IN ('type "c:\A Path With Spaces\A File.txt"') DO (
    ECHO %%A
)

Эта статья дала мне идею использовать «тип» в предложении IN.

6 голосов
/ 06 апреля 2011

Если вы не хотите иметь дело с «кавычками», вы можете использовать переключатель «s» в% ~ dpnx [] ... это выведет короткие имена файлов, с которыми легко работать.

из командной строки ...

for /f "delims=" %f IN ('dir /b /s "C:\Program Files\*.dll"') do echo %~sdpnxf

внутри файла .CMD / .BAT вам нужно "экранировать" [%], например, удвоение [%%]

for /f "delims=" %%f IN ('dir /b /s "C:\Program Files\*.dll"') do echo %%~sdpnxf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...