chrisdi91
Goto Top

Bestimmte Ordner (auch rekursiv) löschen, Lösung ohne Schleife?

Hallo,
ich habe mich zwar ein bischen quergelesen und viel gegoogelt,
allerdings habe ich nur Lösungen mit eine For ... do Schleife gefunden.

Ich möchte Ordner mit beispielsweise den Namen Test rekursiv vom Verzeichnis der Batchdatei löschen.
Also in meinem Ordner Home soll mein Ordner 'Test' soll gelöscht werden (auch die darin befindlichen Ordner,
aber auch in einem Anderen Ordner zb. 'Versuch' in dem sich auch ein Ordner Test befindet,
soll dieser und dessen Unterordner glöscht werden.
Also wäre am Ende nur noch 'Versuch' im Home Ordner ...
so der Plan.

Vielleicht hab ich es auch übersehn, habe halt bisher nur Lösungen mit schleifen gesehn,
aber ich wollte wissen ob man das nicht auch so lösen kann, dass man sagt

del /s *\Test

Dann bekomme ich aber als Meldung:
Die Syntax für den Dateinamen, Verzeichnisnamen oder Datenträgerbezeichnung ist falsch.

Kann ich das in einem Einzeiler (ohne Schleife) quasi mit Wildcars lösen?


Zusatzfrage:
Muss ich bei der Methode mit Forschleife, bzw mit meiner Idee, drauf achten,
dass es nicht noch Ordner mit Namen "Test2" oder so gibt?
Werden die dann (fälschlicherweise) auch gelsöcht?
Bzw wenn ich nur den selben anfang will dass auch Test2 gelöscht werden sollte müsste das
doch mit *\Test* gehen, oder?


Vielen Dank schonmal für Hinweiße bzw gern auch direkt eine Lösung.

Und ja ich habe mir die del Parameter durchgelsen ...
aber wie ich diese evtl kombinieren muss, dass es so tut wie es soll weiß ich leider nicht ...

Content-Key: 251026

Url: https://administrator.de/contentid/251026

Printed on: April 25, 2024 at 01:04 o'clock

Member: colinardo
colinardo Oct 06, 2014 updated at 09:26:34 (UTC)
Goto Top
Hallo chrisdi91,
rd Test\ /s /q
Grüße Uwe
Member: chrisdi91
chrisdi91 Oct 06, 2014 at 09:46:49 (UTC)
Goto Top
Hallo Uwe,

danke für die Antwort.

nun wird zwar im aktuellen Verzeichnis mein Test Ordner gelöscht, allderings habe ich auf selber Verzeichnis ebene einen "Neuer Ordner" angelegt und darin auch ein Test Ordner, der jedoch existiert noch.

Also nicht nur den Ordner Test rekursiv löschen, sondern auch rekursiv nach Ordner mit diesem Namen quasi suchen.

weil mit del *.tex /s kann ich ja zb. sämtliche Dateien dann löschen.

allerdings hat

rd *\Test\ /s /q

wieder die Syntax Fehlermeldung hervorgerufen

Aber vielen Dankschon mal.
Member: colinardo
Solution colinardo Oct 06, 2014 updated at 11:11:56 (UTC)
Goto Top
Ohne Schleife wüsste ich keinen "Batch"-Befehl, der das gewünschte erledigt.
for /f "delims=" %%a in ('dir /B /S /AD "%cd%\*Test"') do @(  
  rd "%%a" /s /q  
)
mit Powershell ist das ebenfalls ein Klacks, aber das möchtest du vermutlich nicht, oder ?
Member: SeriousEE
Solution SeriousEE Oct 06, 2014 updated at 11:12:10 (UTC)
Goto Top
Evt. mit einem Powershell Einzeiler?
Get-ChildItem -Path C:\temp\ -Recurse | ?{$_.PSIsContainer -and $_.Name -eq "test"} | Remove-Item
Member: chrisdi91
chrisdi91 Oct 06, 2014 at 11:15:22 (UTC)
Goto Top
hm vielen dank
euch beiden aufjedenfall.
Ich wollte schon eher so wie hier was und hab ja eingangs auch eher gefragt ob das so möglich ist, nicht dass ich es zwingend so haben muss.
Daher danke aufjedenfall face-smile

Klappt auch so mit der Schleife wie gewünscht, dachte halt nur, dass es evtl auch ohne Schleife mit Wildcardmäßiger Pfaddefinition gehen könnte,
da ich mich bei den Sachen, die ich bei den kleinen Batch-Skripten die ich bisher hatte, noch keine Schleigen brauchte :D
und daher dachte ich es ginge evtl auch ohne, da ich mit eben mit den Parametern die man dort einstellen kann bzw muss noch nicht so auseinander gesetzt habe.

Aber vielen Dank! face-smile
Member: Endoro
Solution Endoro Oct 08, 2014, updated at Oct 10, 2014 at 10:26:01 (UTC)
Goto Top
Hey,
der Batch Einzeiler ohne Schleife wäre
forfiles /p \ /m test /s /c "cmd /c if @isdir==TRUE echo rd /s /q @relpath"   
forfiles fehlt bei manchen XP-Versionen.
Gruss, Endoro