Wie kann ich mit einer Batch-Datei mehrere Ordner mit bestimmter Endung löschen?
Ich möchte eine .bat-Datei machen, die mir alle Duplikaten löscht. Mit den Dateien funktioniert alles prima. Mit dem "rmdir" Befehl kann ich aber leider nicht sowie beim "del"-Befehl das Sternchen () benutzen, das bei meiner Methode nötig ist. Kann mir da jemand irgendwie helfen? Ich bin kein Spezialist in Batch-Dateien.
Das ist der Code, den ich bis jetzt geschrieben habe:
del /s D:\Downloads*(1). del /s D:\Downloads*(2).
del /s D:\Downloads*(3). del /s D:\Downloads*(4).
del /s D:\Downloads*(5). rmdir /s /q D:\Downloads*(1) rmdir /s /q D:\Downloads*(2) rmdir /s /q D:\Downloads*(3) rmdir /s /q D:\Downloads*(4) rmdir /s /q D:\Downloads*(5)
4 Antworten
Direkt kann man keine Wildcards für rd angeben. (...und das ist gut so, ein rd /s /q d:\* wäre ebenso verheerend wie Format d: !)
Wir lassen for /d alle Ordner im BasisOrdner Auflisten und übergeben diese an den RD -Befehl... so bekommt rd nor komplette Namen zu sehen...
@echo off
rem Umlaute erlauben
chcp 65001 >nul
rem hier den Basisordner angeben in dem die zu löschenden Ordner sich befinden
set "BaseFolder=D:\"
rem Namensmaske
set "FolderMask=Downloads*(*)"
rem sicherstellen, dass der Basispfad mit einem Backslash endet...
if "%BaseFolder:~-1%" neq "\" set "BaseFolder=%BaseFolder%\"
rem Basispfad nach Ordnern mit dem passenden Muster durchsuchen,
for /d %%a in ("%BaseFolder%%FolderMask%") do (
rem zur Demo anzeigen was gelöscht würde: zum scharfmachen das echo vor rd entfernen
echo rd /s /q "%%~a"
)
pause
exit /b
PS natürlich kannst Du auch :
for /d %%a in ("D:\Downloads*(*)") do ( rd /s /q "%%~a" )
in die Batch schreiben.(ich persönlich mag es nur nicht für Veränderungen im Schleifenkopf herumzuschreiben. (Trennung von Daten und Code)
Für die direkte Eingabe in die Console verwende einfache % :
for /d %a in ("D:\Downloads*(*)") do ( rd /s /q "%~a" )
Du kannst die Str-Taste gedrückt halten und die Dateien anklicken und dann auf löschen klicken. Das wäre die Altmodische Variante.
Sonst würde ich keine Batch-Datei machen xD.
Mit der Zeit wird das nervtötend. Deshalb mach ich das ja. Jedes mal, wenn ich Dinge zweimal herunterlade einfach auf "Duplikationen löschen" klicken und voila. 😃
Ähm, wer sagt das? Klar kannst du einen Jumper setzen.
Bsp.: del test*. * Somit löscht es alles vor und nach dem Punkt, also die Endung, egal welche.
Gruß Sonic
Wie würdest du es den machen? Es geht darum, alle Duplikationen zu löschen.
Eigentlich kannst du in windows 10 ja die platte "bereinigen" lassen, die routine kümmert sich um sowas oder machst du das der programmierung wegen?
ich sagte beim "rmdir" Befehl gehts nicht xD.
Es funktioniert nur beim "del"-Befehl. 🤔