2009-11-27 18 views

Antwort

42

ist dies die vollständige Antwort, die Sie suchen:

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

wo offensichtlich müssen Sie certain_string mit der ersetzen string Ihre Ordner beginnen mit.

Löscht RECURSIVELY wie Sie gefragt (ich meine, es geht durch alle Ordner und Unterordner).

+2

Nichts anderes als @ Maorcos Antwort funktionierte für mich. Leider hat er keine anderen Stimmen als meine. :( – IsmailS

+3

fwiw: es ist das einzige, das auch für mich funktionierte. Danke :) – edzillion

+1

Thx. Ich musste zwei Verzeichnisse ausschließen, was zu folgendem Befehl führte: 'FOR/D/R %% X IN (* .lproj) DO ​​IF/I" %% ~ xnX "neq" en.lproj "IF/I" %% ~ xnX "neq" deutsch.lproj "RD/S/Q" %% ~ fX "'. Erläuterung: ['%% ~ xnX'] (http://stackoverflow.com/a/636391) entspricht dem vollständigen Verzeichnisnamen. 'IF/I .. neq" en.lproj "' filtert alle Verzeichnisse, die gleich "en.lproj" sind ('/ I' = case-insensitive). IFs [kann verschachtelt werden] (http://stackoverflow.com/a/2143203). Am Ende habe ich rekursiv alle Verzeichnisse gelöscht, die mit '.lproj' enden, außer' en.lproj' und 'english.lproj'. –

1

Unvollendet, denke ich. Wenn Sie bedeutete „Recursively eine Verzeichnishierarchie nach unten gehen, um alle Ordner zu löschen, mit einer bestimmten Zeichenfolge beginnen“, dann kann die folgende genügen:

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

Dies wird der Verzeichnisbaum rekursiv in, finden Sie alle Ordner mit „abc“ ab , iteriere über diese Liste und entferne jeden Ordner.

Vielleicht müssen Sie eine if exist um die rd wickeln, abhängig von der Reihenfolge, in der Verzeichnisse gefunden und zurückgegeben werden. In der Regel über etwas Iterieren und es zugleich ist selten eine gute Idee zu ändern, aber manchmal funktioniert es :-)

+1

Rössel: Hat das funktioniert? Es funktioniert nicht beim Versuch, Verzeichnisse zu löschen, die mit ".delme" enden. Ich habe Ihren Vorschlag folgendermaßen versucht: for/f "delims =" %% x in ('dir/b/ad * .delme') do rd/s/q "%% x" Aber es scheint nicht zu funktionieren. –

+2

@Marco: Keine Notwendigkeit zu schreien. Stellen Sie im Zweifelsfall eine neue Frage und erzählen Sie Ihre Probleme klar und detailliert. Etwas wie »funktioniert nicht« ist normalerweise ein schlechter Bericht. – Joey

+2

Rossel: schrie nicht, ich schrieb nur Großbuchstaben. Ich werde dann eine neue Frage stellen. –

4

Wie wäre:

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

Dieser von der Eingabeaufforderung arbeiten. Innerhalb einer Batch-Datei, würden Sie die % s zu verdoppeln haben, wie üblich:

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

Autsch. Ich brauche mehr Schlaf ... oder Tee ... * (Hits Kopf auf den Tisch) * – Joey

+0

Hmm, obwohl das wahrscheinlich nicht in den Verzeichnisbaum rekurrieren und tiefere Ordner finden, die den Kriterien entsprechen, richtig? (Meine Lösungen tun das auch nicht, aber ich habe gerade gemerkt, dass das das OP bedeutet). – Joey

+0

Ich musste dies ein bisschen von meinem ursprünglichen einfachen Versuch erweitern, weil 'rd' nicht scheint, Wildcards zu erweitern. –

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

rm -rf - "Verzeichnisname"

Ex: rm -rf - "-2096378"

Befehl werden die Ordner/Verzeichnisse beginnend mit löscht - oder Platzhalter

Verwandte Themen