Ich muss alle JPG- und TXT-Dateien (zum Beispiel) in dir1 und dir2 löschen.
Was ich versucht habe war:
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
In einigen Verzeichnissen hat es funktioniert; in anderen nicht.
Zum Beispiel hat dies nichts bewirkt:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
Was fehlt mir im zweiten Ausschnitt? Warum hat es nicht funktioniert?
batch-file
cmd
ärgerlich
quelle
quelle
Antworten:
Sie können mit dem
del
Befehl Platzhalter verwenden und/S
dies rekursiv tun.del /S *.jpg
Nachtrag
@BmyGuest fragte, warum eine herabgestimmte Antwort (
del /s c:\*.blaawbg
) anders sei als meine Antwort.Es gibt einen großen Unterschied zwischen Laufen
del /S *.jpg
unddel /S C:\*.jpg
. Der erste Befehl wird vom aktuellen Speicherort aus ausgeführt , während der zweite auf dem gesamten Laufwerk ausgeführt wird .In dem Szenario, in dem Sie
jpg
Dateien mit dem zweiten Befehl löschen , funktionieren einige Anwendungen möglicherweise nicht mehr und Sie verlieren alle Ihre Familienbilder. Dies ist äußerst ärgerlich, aber Ihr Computer kann weiterhin ausgeführt werden.Wenn Sie jedoch an einem Projekt arbeiten und alle Ihre
dll
Dateien in löschen möchtenmyProject\dll
, führen Sie die folgende Batchdatei aus:Dann entfernen Sie alle
dll
Dateien von IhremC:\
Laufwerk. Alle Ihre Anwendungen funktionieren nicht mehr, Ihr Computer wird unbrauchbar und beim nächsten Neustart werden Sie in die vierte Dimension teleportiert, in der Sie für immer stecken bleiben.Die Lektion hier besteht darin, einen solchen Befehl nicht direkt im Stammverzeichnis eines Laufwerks (oder an einem anderen Ort auszuführen, der möglicherweise gefährlich ist, z. B.
%windir%
), wenn Sie dies vermeiden können. Führen Sie sie immer so lokal wie möglich aus.quelle
pause
am Ende kann der Benutzer die vollständigen Protokollinformationen anzeigen.cd
unddel
Befehle mit "&" kombinieren , siehe stackoverflow.com/q/8055371/7429464del
Befehl angeben , ohne das aktuelle Verzeichnis ändern zu müssen.Ich habe vor einiger Zeit ein Batch-Skript geschrieben, mit dem Sie eine zu löschende Dateierweiterung auswählen können. Das Skript sucht in dem Ordner, in dem es sich befindet, und in allen Unterordnern nach Dateien mit dieser Erweiterung und löscht sie.
Hoffe, dass dies für jeden nützlich ist, der es will :)
quelle
find . -name "*.ext" -type f -delete
(wobei ext die von Ihnen gewählte Erweiterung ist) aus.Sie können dies verwenden, um ALLE Dateien in einem Ordner und Unterordnern zu löschen:
Oder verwenden Sie diese Option, um nur bestimmte Dateitypen zu löschen:
quelle
Ich habe nicht genug Ruf, um einen Kommentar hinzuzufügen, deshalb habe ich dies als Antwort gepostet. Aber für das ursprüngliche Problem mit diesem Befehl:
Dem ersten For fehlt die rekursive Syntax. Es sollte sein:
Sie können einfach tun:
um die tatsächliche Ausgabe anzuzeigen.
quelle
Das ist es:
pd: Ersetze folder_path durch deinen Ordner
quelle
Wenn Sie versuchen, bestimmte .extensions im Laufwerk C: zu löschen, verwenden Sie dieses cmd:
Ich hatte einen Kunden, der einen Verschlüsselungsvirus hatte, und ich musste alle Junk-Dateien finden und löschen.
quelle
del /s c:\*.dll
, stehen Sie vor einer sehr schlechten Überraschung. Führen Sie solche Befehle niemals auf dem gesamten Laufwerk aus, es sei denn, dies ist unbedingt erforderlich.c:
sollte durch den gewünschten Ordner ersetzt werden, wenn die Person nicht das gesamte Laufwerk haben möchte.