2009-11-27 11 views

Répondre

42

Ceci est la réponse complète que vous recherchez:

FOR /D /R %%X IN (certain_string*) DO RD /S /Q "%%X" 

où de toute évidence, vous devez remplacer certain_string avec le chaîne vos dossiers commencent avec.

Ceci supprime de manière RECURSIVE comme vous le demandiez (je veux dire qu'il passe par tous les dossiers et sous-dossiers).

+2

Rien d'autre que la réponse de @ Maorco a fonctionné pour moi. Malheureusement, il n'a pas d'autres votes que le mien. :( – IsmailS

+3

fwiw: c'est la seule qui a fonctionné pour moi aussi merci :) – edzillion

+1

Thx. J'ai dû exclure deux répertoires, ce qui a entraîné cette commande: 'FOR/D/R %% X IN (* .lproj) FAIRE SI/I" %% ~ xnX "neq" en.lproj "IF/I" %% ~ xnX "neq" french.lproj "RD/S/Q" %% ~ fX "'. Explication: ['%% ~ xnX'] (http://stackoverflow.com/a/636391) est le nom complet du répertoire. 'IF/I .. neq" en.lproj "' filtre tous les répertoires qui sont égaux '' en.lproj "' ('/ I' = insensible à la casse). IFs [peut être imbriqué] (http://stackoverflow.com/a/2143203). À la fin, j'ai supprimé récursivement tous les répertoires se terminant par '.lproj', sauf' en.lproj' et 'english.lproj'. –

1

Inachevé, je pense. Si vous vouliez dire « récursive descendre une hiérarchie de répertoire pour supprimer tous les dossiers commençant par une certaine chaîne », le suivant pourrait suffire:

for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x" 

Cela récursivité dans l'arborescence des répertoires, trouver tous les dossiers commençant par « abc » , parcourez cette liste et supprimez chaque dossier.

Peut-être que vous devez entourer un if exist autour du rd en fonction de l'ordre dans lequel les répertoires sont trouvés et retournés. En général, itérer sur quelque chose et changer en même temps est rarement une bonne idée, mais parfois ça marche :-)

+1

Rössel: a travaillé sur ce produit? Cela ne fonctionne pas lorsque vous essayez de supprimer des répertoires se terminant par ".delme", ​​j'ai essayé votre suggestion comme suit: pour/f "delims =" %% x dans ('dir/b/ad * .delme') do rd/s/q "%% x" MAIS IL NE SEMBLE PAS FONCTIONNER. –

+2

@Marco: Pas besoin de crier. En cas de doute, posez une nouvelle question et racontez vos problèmes clairement et en détail. Quelque chose comme "Ne fonctionne pas" est généralement un mauvais rapport de problème. – Joey

+2

Rossel: ne criait pas, je viens d'écrire des majuscules. Je vais poser une nouvelle question alors. –

4

Que diriez-vous:

for /d %a in (certain_string*) do rd /s %a 

Cela fonctionne à partir de l'invite de commande. A l'intérieur d'un fichier de commandes, vous devez doubler les % s, comme d'habitude:

@echo off 
for /d %%a in (certain_string*) do rd /s %%a 
+0

Ouch. J'ai besoin de plus de sommeil ... ou de thé ... * (frappe la tête sur la table) * – Joey

+0

Hmm, bien que cela ne se reproduira probablement pas dans l'arbre dir et trouver des dossiers plus profonds correspondant aux critères, non? (Mes solutions ne le font pas aussi, mais je viens juste de réaliser que c'est ce que l'OP voulait dire). – Joey

+0

J'ai dû développer ceci un peu de mon essai simple original, parce que 'rd 'ne semble pas développer des caractères génériques par lui-même. –

-1
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S/Q %i 
0

rm -rf - "Nom du répertoire"

Ex: rm -rf - "-2096378"

Au-dessus de commande sera supprime les dossiers/répertoires commençant par - ou des caractères génériques