fichier batch pour la boucle avec des espaces dans le nom dir

Comment puis-je modifier ceci:

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

Pour 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

49
demandé sur Ross Ridge 2011-04-05 17:57:52

3 réponses

, 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

75
répondu Jan Zyka 2018-09-26 21:02:46

J'ai contourné cela en ajoutant "type" et en mettant des guillemets doubles entourant le 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 le "type" dans la clause in.

27
répondu Jason 2012-03-27 19:29:31

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

Depuis la ligne de commande...

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

À l'intérieur d'un .CMD/.Fichier 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
répondu thomspengler 2014-12-17 14:26:01