robota
Goto Top

Verzeichnis mit unbekanntem Pfad per Batch löschen?

Hallo Leutz !

Tolles Forum habt Ihr hier. Bin beim Googeln immer wieder zu Beiträgen auf eurer Forum verwiesen worden.
Ich tue mich allerdings gerade ziehmlich schwer genügend Informationen zu meinem Problem zusammen zu suchen.
Meine Batch Kenntnisse sind zudem nicht gerade überragend (eher mies!).

Also folgendes Problem:

Ich möchte per Batchfile einen Ordner auf meiner externen Festplatte bei Systemstart löschen.
Der Ordner dessen Name bekannt ist enthält Unterordner und Dateien (teilweise schreibgeschützt und versteckt).
Leider ist der genaue Pfad des Ordners auf der Platte nicht bekannt so das dieser erst gesucht werden muß oder eine Wildcard verwendet werden muß.

Sieht in etwa so aus:

D:\Directory1\Directory2\*nicht bekannt*\Mülldaten


Der zu löschende Ordner soll komplett ohne Nachfrage im Quiet-Mode gelöscht werden.
Achso mein OS ist XP-Pro.
Hab schon einige Hinweise in anderen Beiträgen gefunden allerdings raffe ich es nicht auf mein Problem zu übertragen.

Hab nen Batch fertig um ein Verzeichnis zu löschen allerdings fehlt dabei die Sache mit dem unbekannten Pfad:

rmdir "D:\Directory1\Directory2\Directory3\Directory4\Mülldaten" /s /q


Bin für jeden Tip dankbar

robo

Content-Key: 105867

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

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

Member: GhostScripter
GhostScripter Jan 13, 2009 at 13:09:40 (UTC)
Goto Top
probier mal das:

for /F %i in ('dir /B /AD /S D:\Directory1\Directory2\Mülldaten') do @echo rmdir /s /q %i\..

wenn der Befehl dan richtig dasteht, lösche echo raus

exit
GS
Member: Ren
Ren Jan 13, 2009 at 23:44:28 (UTC)
Goto Top
jo, den Ansatz würde ich auch wählen. Für den Anfänger aber noch ein wenig Erläuterung, nicht getestet:
/code
::springe in das bekannte Verzeichnis, in dem das Verzeichnis Mülldaten liegt
pushd "D:\Directory1\Directory2"
::Der Befehl meines Vorredners, etwas angepasst:
::Er sucht alle Verzeichnisse, die "Mülldaten" heißen. Dann gibt er den Befehl aus, den er zum löschen verwenden würde
for /F %%i in ('dir /B /AD /S Mülldaten') do @echo rmdir /s /q "%%i"
::wieder zurückspringen, in das Verzeichnis, aus dem die Batch aufgerufen wurde..
popd
/code
wenn du das echo löscht, führt er den Befehl aus. Die doppelten %-Zeichen sind in Batches nötig. Und Vorsicht: er löscht wirklich alle Verzeichnisse, die unterhalb von "D:\Directory1\Directory2" "Mülldaten" heißen, egal, wie tief sie liegen.
gruß
Member: robota
robota Jan 14, 2009 at 08:15:01 (UTC)
Goto Top
Hallo ich noch mal,

Danke erstmal für die schnellen Antworten.
Das Batchfile wie oben beschrieben arbeitet bei mir prima .
Der "Müllordner wird ordnungsgemäß gefunden und gelöscht.
Soweit ok. Bis auf eine kleine Sache.
Es wird nicht nur der Ordner "Mülldaten" gelöscht sondern auch der nächst übergeordnete Ordner.
Wie muß ich das Batchfile ändern damit nur der gefundene "Mülldaten"-Ordner gelöscht wird?

Gruß robo
Member: GhostScripter
GhostScripter Jan 14, 2009 at 09:35:42 (UTC)
Goto Top
Nimm den Backslash und die beiden Punkte weg. Ich will versuchen es zu erläutern (Ist ja nicht so, das ich nicht kritikfähig wäre):

das \.. am Ende des Befehls bewirkt, dass der Befehl auf das Verzeichnis, welches oberhalb von Mülldaten liegt , angewendet wird.

back-to-topBeispiel
rmdir "D:\Directory1\Directory2\Directory3\Directory4\Mülldaten\.." /s /q  
Dieser Befehl löscht Directory4 inklusive aller Unterverzeichnisse (z.B. auch Mülldaten)

back-to-topneuer Code
for /F %i in ('dir /B /AD /S D:\Directory1\Directory2\Mülldaten') do @echo rmdir /s /q %i  
Dieser Befehl sollte nun nur den Ordner Mülldaten löschen.

ebenfalls ungetestet, ohne Schusswaffen und Gewähr, und selbstverständlich auf eigene Verantwortung

exit
GS