Löschen per Batch
Ich bin auf der Suche nach einer Möglichkeit, eine bestimmte Datei per Batch-Script zu löschen.
Das Script sollte wie folgt arbeiten:
- Zunächst soll der Inhalt des Verzeichnisses X:\BACKUP in eine Datei (XYZ.TXT) oder Variable geschrieben werden
- Das Script soll nun zum Beispiel die ersten drei Dateien (Zeilen aus der Datei XYZ.TXT oder Variable, siehe oben) überspringen und die vierte Datei löschen.
- Die Anzahl, die übersprungen werden soll kann als Variable zur Batchausführung angefügt werden oder direkt in das Script geschrieben sein.
Wäre nett, wenn mir jemand dabei helfen könnte!!!!!
Das Script sollte wie folgt arbeiten:
- Zunächst soll der Inhalt des Verzeichnisses X:\BACKUP in eine Datei (XYZ.TXT) oder Variable geschrieben werden
- Das Script soll nun zum Beispiel die ersten drei Dateien (Zeilen aus der Datei XYZ.TXT oder Variable, siehe oben) überspringen und die vierte Datei löschen.
- Die Anzahl, die übersprungen werden soll kann als Variable zur Batchausführung angefügt werden oder direkt in das Script geschrieben sein.
Wäre nett, wenn mir jemand dabei helfen könnte!!!!!
Please also mark the comments that contributed to the solution of the article
Content-ID: 111204
Url: https://administrator.de/contentid/111204
Printed on: December 2, 2024 at 17:12 o'clock
11 Comments
Latest comment
Zitat von @SKU160974:
Das Script sollte wie folgt arbeiten:
- Zunächst soll der Inhalt des Verzeichnisses X:\BACKUP in eine
Datei (XYZ.TXT) oder Variable geschrieben werden
Das Script sollte wie folgt arbeiten:
- Zunächst soll der Inhalt des Verzeichnisses X:\BACKUP in eine
Datei (XYZ.TXT) oder Variable geschrieben werden
Also eine Liste der Dateien kann man so erzeugen. Dateien löschen geht mit "delete". Wie man aber die ersten 3 oder 4 Zeilen überspringt weiß ich nicht.
cd X:\BACKUP
dir /B >> XYZ.txt
Hallo Steffen1609 und willkommen im Forum!
Ausgehend vom Namen des Verzeichnisses nehme ich einmal an, Du willst alte Sicherungen löschen und nur die X neuesten behalten - in diesem Fall (ansonsten die Sortierung für die Ausgabe des "dir"-Befehles anpassen - siehe dazu "dir /?") sähe der Batch etwa so aus:
Zum Testen steht vor dem Löschbefehl noch ein "echo" - so wird der Befehl nur angezeigt, aber noch nicht ausgeführt. Wenn Du ernst machen willst, dieses "echo" (und auch "pause") entfernen.
Grüße
bastla
Ausgehend vom Namen des Verzeichnisses nehme ich einmal an, Du willst alte Sicherungen löschen und nur die X neuesten behalten - in diesem Fall (ansonsten die Sortierung für die Ausgabe des "dir"-Befehles anpassen - siehe dazu "dir /?") sähe der Batch etwa so aus:
@echo off & setlocal
set "Verz=X:\Backup"
set /a X=2
for /f "skip=%X% delims=" %%i in ('dir /b /o-d /a-d "%Verz%\*.*"') do echo del "%Verz%\%%i"
pause
Grüße
bastla
Hallo Steffen1609!
Um für den Fall vorzusorgen, dass es nicht mehr als X Dateien gibt (und %L% daher keinen Dateinamen enthält), wird nach der Schleife per "if defined" das Löschen davon abhängig gemacht, dass %L% nicht leer ist.
Grüße
bastla
Die Variable "L" scheint laut Script ein Dateiname zu sein
So ist es - um nur eine Datei zu erfassen, wird die Variable vorweg gelöscht (nur um sicher zu gehen), und ihr dann innerhalb der Schleife nur unter der Voraussetzung, dass sie noch keinen Wert hat (und demzufolge "not defined" ist), ein Wert (ist dann der erste nicht übersprungene Dateiname) zugewiesen - für alle weiteren Schleifendurchläufe gilt, dass die Variable bereits einen Inhalt hat und daher nicht mehr verändert wird.Um für den Fall vorzusorgen, dass es nicht mehr als X Dateien gibt (und %L% daher keinen Dateinamen enthält), wird nach der Schleife per "if defined" das Löschen davon abhängig gemacht, dass %L% nicht leer ist.
Grüße
bastla
Hallo Steffen1609!
Wenn Du in Zeile 1 das "echo off" auf "echo on" änderst, kannst Du Dir jeden Befehl vor der Ausführung ansehen.
Noch ein Hinweis zum Pfad in Zeile 2: Dieser ist ohne "\" am Ende zu schreiben - auch wenn zB "X:\" gemeint wäre, nur "X:" angeben.
Grüße
bastla
Kann es sein, dass in der Zeile 7 bei "%Verz%\%L%" der del-Befehl keinen Dateinamen als Eingabe bekommt?
Der Fehler stammt nicht aus dieser Zeile, da dort nur eine Ausgabe erfolgt (und noch nicht einmal das, wenn %L% leer wäre - siehe oben).Wenn Du in Zeile 1 das "echo off" auf "echo on" änderst, kannst Du Dir jeden Befehl vor der Ausführung ansehen.
Noch ein Hinweis zum Pfad in Zeile 2: Dieser ist ohne "\" am Ende zu schreiben - auch wenn zB "X:\" gemeint wäre, nur "X:" angeben.
Grüße
bastla