Batch-Skript zum Löschen von Dateien

96

Ich habe ein Batch-Skript wie folgt.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

Der obige Code löscht alle ".txt" - und ".tsv" -Dateien aus allen Ordnern mit Ausnahme des Ordners TEST 100%. Zum Löschen der Dateien aus TEST 100%bekomme ich den Fehler als The Path could not be found. Ich denke, das% -Symbol im Ordnernamen verursacht das Problem. Kann mich jemand anleiten, das Problem zu beheben und die Dateien aus dem Ordner zu löschen TEST 100%?

Satheesh
quelle
Warum haben Sie ein Zitat in der ersten Zeile? Warum beziehen Sie sich auch auf das Laufwerk, wenn Ihre Batchdatei bereits in der ersten Zeile auf dieses Laufwerk geändert wurde? Ich habe versucht, Ihr Problem zu replizieren, und alles hat funktioniert. Haben Sie bestätigt, dass das Archiv zu 100% in Test vorhanden ist?
RonaldBarzell

Antworten:

112

Sie müssen dem% mit einem anderen entkommen ...

del "D:\TEST\TEST 100%%\Archive*.TXT"
Russ Freeman
quelle
Ich kann nicht für das OP sprechen, aber auf meinem System gibt es kein Problem, einen Pfad mit% zu finden, und das Entkommen mit %% verhindert, dass das System ihn findet.
RonaldBarzell
@ user1161318 - Ich habe es unter Windows 7 getestet. Ohne Escape führt in einer Batchdatei "Das System kann den angegebenen Pfad nicht finden". Wie ich gepostet habe funktioniert es.
Russ Freeman
Ok, unter XP bekomme ich die gegenteiligen Ergebnisse. Der Pfad wird mit% in Ordnung gefunden, mit %% jedoch nicht.
RonaldBarzell
5
Ich vermute, dass Sie dies über die Eingabeaufforderung und nicht über eine Batchdatei tun.
Russ Freeman
2
Du hast wahrscheinlich Recht. Ich vergesse immer wieder, dass% in einer Batch-Datei ein variables Präfix ist und Sie es maskieren müssen. +1
RonaldBarzell
12

Es gibt mehrere Möglichkeiten, Dinge im Stapel zu erledigen. Wenn %%Sie also nicht mit einem doppelten Prozentsatz entkommen können , können Sie Folgendes versuchen:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

So funktioniert das:

set olddir=%CD% setzt die Variable "olddir" oder einen beliebigen anderen Variablennamen auf das Verzeichnis fest, aus dem Ihre Batchdatei gestartet wurde.

cd /d "path of folder"ändert das aktuelle Verzeichnis, in dem der Stapel angezeigt wird. Behalten Sie die Anführungszeichen bei und ändern Sie den Pfad des Ordners zu dem Pfad, den Sie anstreben.

del "file name/ or *.txt etc..."löscht die Datei in dem aktuellen Verzeichnis, in dem sich Ihr Stapel befindet. Fügen Sie einfach keinen Verzeichnispfad vor dem Dateinamen hinzu und haben Sie nur den vollständigen Dateinamen oder, um mehrere Dateien mit derselben Erweiterung mit *.txtoder einer beliebigen Erweiterung zu löschen .

cd /d "%olddir%"Nimmt die mit Ihrem alten Pfad gespeicherte Variable und kehrt zu dem Verzeichnis zurück, mit dem Sie den Stapel gestartet haben. Dies ist nicht wichtig, wenn Sie nicht möchten, dass der Stapel zum vorherigen Verzeichnispfad zurückkehrt, und wie angegeben, bevor der Variablenname geändert werden kann was auch immer Sie wünschen, indem Sie das ändern set olddir=%CD% line.

user1931470
quelle
Dies geschieht am besten durch pushd "folder" && del "filename" & popd.
Nuno André
10

Nehmen wir an, Sie haben Ihre Software auf Ihrem Desktop gespeichert.
Wenn Sie einen ganzen Ordner wie ein Deinstallationsprogramm entfernen möchten, können Sie dies verwenden.

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

Dadurch werden der gesamte Ordner namens Software und alle seine Dateien und Unterordner gelöscht

Stellen Sie sicher, dass Sie den richtigen Ordner löschen, da dies keine Ja / Nein-Option hat

user3674709
quelle
4

Bedenken Sie, dass die zu löschenden Dateien eine Erweiterung haben txtund sich am Speicherort befinden D:\My Folder. Dann können Sie den folgenden Code in der bat-Datei verwenden.

cd "D:\My Folder"
DEL *.txt 
Sarath Avanavu
quelle
-7

Im Batch-Code sollte Ihr Pfad kein Leerzeichen enthalten. Ändern Sie daher Ihren Ordnernamen von "TEST 100%" in "TEST_100%". Ihr neuer Code lautet "D: \ TEST \ TEST_100% \ Archive * .TXT".

Ich hoffe, dies wird Ihr Problem lösen

Ravi
quelle
6
Noch nie davon gehört. Ist das neu -Sarkasmus aus. Es funktioniert mit Leerzeichen wie ohne, solange Sie es in Anführungszeichen setzen.
Blacktempel