2009-09-04 7 views
0

Actuellement, mon simple script batch ressemble à ceci:Pour boucle ignorant les répertoires avec un espace dans les?

@echo off 
for /D /r C:\myprojects\AIS\ %%G in (_svn) do rd /S /Q %%G 
pause 

Malheureusement, ce Ignore tous les répertoires avec un espace en eux, comme un répertoire appelé « Mes projets ». Comment est-ce que je contourne ceci et m'assure que je traverse également ce répertoire?

+0

est-ce Windows (DOS)? peut-être une balise 'batch-file' –

+0

Oui c'est. Je mets la balise "batch" dessus, mais je vais aussi inclure "batch-file" si vous le souhaitez. – Chris

+0

désolé, n'a pas vu ça, cerveau mort un vendredi matin –

Répondre

1

Pouvez-vous mettre des guillemets autour du nom du répertoire?

+0

J'ai essayé ceci: pour/D/r C: \ electionscanadaprojects \ AIS \ "%% G" dans (_svn) fait/S/Q "%% G", puisque %% G contient le nom du répertoire, mais pas de dés . – Chris

+0

Avez-vous d'échapper aux citations en quelque sorte? Je devine juste ici, je ne suis pas un gars DOS (c'est DOS, non?) –

+0

Oui c'est dos. Je ne crois pas que vous deviez échapper aux guillemets, car cela fonctionne normalement si vous avez donné le chemin direct vers le répertoire. Cependant, le fait d'être stocké dans une variable me cause des problèmes, je pense. (Je sais que les scripts par lots peuvent être erronés) – Chris

2

Hmmm ... ça a l'air de marcher pour moi. Avez-vous essayé l'écho à la place?

C:\tmp> TREE /A C:\tmp\xxx 
C:\TMP\XXX 
\---one one 
    \---two two 

C:\tmp> FOR /D /R c:\tmp\xxx %I IN (_svn) DO @ECHO RD "%I" 
RD "c:\tmp\xxx\_svn" 
RD "c:\tmp\xxx\one one\_svn" 
RD "c:\tmp\xxx\one one\two two\_svn" 

Vous avez probablement besoin des guillemets autour de votre argument rmdir. Si vous voulez être vraiment paranoïaque, utilisez %~I à la place pour vous protéger contre le chaos que provoquerait autrement FOR /D /R ... %I IN ("_svn").

Questions connexes