web-dev-qa-db-fra.com

fichier de commandes pour la boucle avec des espaces dans le nom du répertoire

Comment puis-je modifier cela:

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

fonctionner lorsque le chemin contient des espaces?

Par exemple, si cela est exécuté à partir de

c:\my folder with spaces

il fera écho:

c:\my

Merci

52
Andrew Bullock

Vous devez utiliser:

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

Cela remplace les délimiteurs par défaut qui sont TAB et SPACE

78
Jan Zyka

J'ai contourné cela en ajoutant "type" et en mettant des guillemets autour du chemin dans la clause IN

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

Cet article m'a donné l'idée d'utiliser "type" dans la clause IN.

30
Jason

Si vous ne voulez pas traiter les "guillemets", vous pouvez utiliser le commutateur "s" dans% ~ dpnx [] ... cela produira les noms de fichiers courts qui sont faciles à utiliser.

à partir de la ligne de commande ...

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

dans un fichier .CMD/.BAT, vous devez "échapper" le [%], par exemple, double-up [%%]

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