Löschen *. * mit Ausnahme einiger Erweiterungen

7

Ich versuche, eine Batchdatei in Windows zu erstellen, um alle Dateien im aktuellen Verzeichnis zu löschen, jedoch ohne 4 Dateierweiterungen (log, sdb, sdk, bat).

Ich habe den Befehl Forfiles unter Windows versucht, aber das löscht alles in meinem aktuellen Ordner (sogar die Bat-Datei). Mein Befehl ist:

%Vor%

Wie kann ich es zum Laufen bringen?

Vielen Dank!

    
Francisco Chavez 24.02.2012, 02:06
quelle

6 Antworten

9
  • interne Anführungszeichen müssen mit \ maskiert werden
  • Sie wollen wahrscheinlich IF /I (case insensitive) -Option
  • Sie sollten @ ISDIR verwenden, um Verzeichnisse auszuschließen
  • DEL / Q Option war nach dem letzten Zitat, sollte vor dem letzten Zitat sein, aber es wird nicht benötigt
  • Klammern sind nicht erforderlich
  • Die Option
  • FORFILES / M wird nicht benötigt, da Ihre Maske "alle Dateien" ist

Dies sollte funktionieren

%Vor%

Aber das obige ist sehr langsam, und es ist sicher eine Menge zu tippen.

Das Folgende ist viel einfacher und schneller.

%Vor%     
dbenham 24.02.2012 03:45
quelle
5

Wenn ROBOCOPY für Sie verfügbar ist:

%Vor%

Das heißt, Sie erstellen ein temporäres Unterverzeichnis und verschieben die zu löschenden Dateien (das ist schnell, da sich das Zielverzeichnis auf demselben Laufwerk befindet und nur die Dateinamen verschoben werden, nicht der Inhalt der Dateien) ), dann lösche das Unterverzeichnis.

    
Andriy M 24.02.2012 12:56
quelle
3
%Vor%     
Aacini 24.02.2012 04:02
quelle
3

Sie können auch Folgendes tun:

%Vor%

- Mario

    
Mario Cornejo 24.02.2012 19:19
quelle
1
%Vor%

Das ist ungefähr so ​​einfach wie ich dieses Skript bekommen könnte. Sie wollten die Makrodateien (.dqy) behalten, aber alle anderen, die älter als 14 Tage sind, rekursiv löschen.

Wird im aktuellen Verzeichnis ausgeführt (Vorsicht beim Testen).

    
paul sanders 23.03.2016 04:26
quelle
0

Ich bin auf dieses Thema gestoßen und habe nach einer Möglichkeit gesucht, Hunderte von Dateien zu löschen, die von einem Virus erstellt wurden. Keine der Lösungen funktionierte wirklich für mich, also habe ich herausgefunden, wie man es von einer Kommandozeile aus macht. Ich brauchte nur 2 Erweiterungen (Mail-Archiv). Das hat den Trick gemacht:

%Vor%

Ich benutze das / R, um rekursiv zu arbeiten: schau in alle Unterordner. Das% ~ xf betrachtet nur die Erweiterung (aus irgendeinem Grund funktionierte es nicht ohne es). Ich benutze die Anführungszeichen "% f" bei dem Löschbefehl, um die langen Namen von Fenstern mit Leerzeichen (insbesondere in Ordnernamen) abzudecken. Aus irgendeinem Grund hat das Hinzufügen von Leerzeichen vor und nach dem == zu Fehlern geführt.

    
Vasch 13.05.2016 10:22
quelle

Tags und Links