![]() |
Batchscript zum automatischen Löschen von Dateien
Ich habe folgendes Batchscript, um zusätzliche Backups von meinen Daten auf dem NAS auf dem Llokalen PC zu machen:
Code:
Wie man sieht wird ein Ordner mit aktuellem Datum und Zeit angelegt, in dem dann die Dateien einfach kopiert werden. jetzt ist es aber so, dass auch ein TB irgendwann mal voll ist. Ich wollte jetzt, dass das Script vor dem Kopieren, das älteste Backup löscht, so dass immer genug Speicherplatz für ein neues Backup ist. Bisher habe ich immer vorher immer selbst geguckt, ob ich ein altes Backup von Hand löschen muss. Das würde ich gerne im Script automatisieren.
@echo off
rem Projekt : Backupskript NAS auf Zeus rem Autor : Michael Puff <mail@michael-puff.de> rem Datum : 2019-05-21 set h=%time:~0,2% set m=%time:~3,2% Set CTIME=%h%-%m% :DATEN echo Dateien von Herakles auf Zeus Laufwerk D: Backup sichern echo VC Container "Dokumente" trennen... veracrypt /d /l y /f /q echo Daten sicher nach Zeus\D: Backup ... md "D:\%date% %CTIME% robocopy "Z:" "D:\%date% %CTIME%" /MIR /A-:A /XD "Z:\#recycle" /V attrib "D:\%date% %CTIME%" /S /D -S -H Pause (Bitte keine Vorschläge für externe, zusätzliche Programme.) |
AW: Batchscript zum automatischen Löschen von Dateien
Mit dir /OD kannst Du Dir die Verzeichnisse sortiert nach Datum ausgeben lassen.
Mit dir /AD bekommst Du nur die Verzeichnisse ausgegeben. Mit dir /b bekommst Du nur die Namen. Mit dir /OD /AD /b bekommst Du die Verzeichnisnamen sortiert nach Datum. Mit dir /O-D /AD /b bekommst Du die Verzeichnisnamen absteigend sortiert nach Datum. Versteckte, schreibgeschützte und Systemverzeichnisse sollen nicht berücksichtigt werden, sie müssen erhalten bleiben. Dies sollte mit dir /O-D /AD-r-s-h /b gehen. Mit 'nem > leitest Du die Ausgabe in eine Datei um. Jede neue Ausgabe überschreibt eine ggfls. vorhanden Datei. Bei mehreren Ausgaben hintereinander enthält daher die Datei nur die letzte Ausgabe. Das kannst Du nun in einer For-Schleife abarbeiten und in eine Datei ausgeben lassen. Daraus wird dann
Code:
In der Datei loesch.das.Verzeichnis steht nun der Name des ältesten Verzeichnisses.
for /f usebackq %i in (`dir /O-D /AD-r-s-h /b`) do @echo %i > loesch.das.Verzeichnis
Diese Datei kannst Du nun als Eingabe für eine weitere For-Schleife nutzen.
Code:
Bevor Du das jetzt einfach "losschickst" schau Dir bitte die Syntax der genutzen Befehle auf der Kommandozeile an, damit Du a weißt, was da passiert und Du b (und das ist wichtiger) nachprüfen kannst, ob ich hier jetzt nicht gerade argen Unsinn geschrieben habe ;-)
for /f %i in (loesch.das.Verzeichnis) do rd /q /s %i
Als Batch zusammengedaddelt käme ungefähr sowas dabei raus:
Code:
Und das ist natürlich ungetestet, nur so als Idee.
rem alte Ausgabedatei ggfls. loeschen
if exists loesch.das.Verzeichnis del loesch.das.Verzeichnis rem aeltestes Verzeichnis ermitteln: for /f usebackq %%i in (`dir /O-D /AD-r-s-h /b `) do @echo %%i > loesch.das.Verzeichnis rem aeltestes Verzeichnis ohne Nachfrage rekursiv loeschen for /f %%i in (loesch.das.Verzeichnis) do rd /q /s %%i rem Ausgabedatei loeschen if exists loesch.das.Verzeichnis del loesch.das.Verzeichnis |
AW: Batchscript zum automatischen Löschen von Dateien
Super. Dank dir. Sieht gut aus. :thumb:
|
AW: Batchscript zum automatischen Löschen von Dateien
Für den Fall, dass es nicht um das älteste Backup geht sondern eine bestimmte Anzahl von Backupstufen existieren sollen, geht das ebenfalls recht einfach mit Batch:
Code:
Der Code bezieht sich zwar auf Dateien statt Verzeichnisse, aber das Prinzip sollte klar werden.
set RETAINBACKUPS=15
set BACKUPDIR=D:\rive\some\path ... for /F "skip=%RETAINBACKUPS% delims=" %%F ('dir /B /A-D /O-D "%BACKUPDIR%" 2^>NUL') DO ( del /F "%BACKUPDIR%\%%F" ) Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Sahne!
Hoffentlich kann ich mir den Thread merken. Gruß K-H |
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
Es sieht bei mir so aus:
Code:
Und so weiter. Ich will jetzt, sagen wir drei Sicherungen, behalten. Wie müsste ich den Code anpassen?
2019-05-10 13-41
2019-05-15 13-41 2019-05-18 13-41 2019-05-21 13-41 |
AW: Batchscript zum automatischen Löschen von Dateien
Sorry in der For-Schleife ist das *. absolut überflüssig bzw. kontaproduktiv. Habe es oben entfernt.
|
AW: Batchscript zum automatischen Löschen von Dateien
:oops: Im Code oben fehlte das wichtige IN vor der ersten öffnenden Klammer.
Nun korrigiert und auf Verzeichnisse angepasst:
Code:
Wenn die Ausgabe passt, kannst du einfach das echo vor dem rmdir entfernen, um tatsächlich zu löschen. Es sollte klar sein, dass derartige Löschaktionen endgültig sind. Also immer schön testen, ggf. mit Kopien.
@echo off
set RETAINBACKUPS=3 set BACKUPDIR=D:\rive\some\path if NOT exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD /O-D "%BACKUPDIR%" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) [EDIT] Noch eine Kleinigkeit: Die Zahl der verbleibenden Stufen ist eigentlich nicht ganz korrekt. Es werden so viele Stufen behalten wie angegeben, aber wenn das neue Backup nach dem Löschen erfolgt, liegt letztlich eine Stufe mehr im %BACKUPDIR%. [/EDIT] Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Ich war gerade am debuggen. Das Script hat sich nämlich ohne was zu machen verabschiedet.
|
AW: Batchscript zum automatischen Löschen von Dateien
Irgendwie sehe ich keine Ausgabe bis auf die Pause Befehle. Müsste das Script nicht
Zitat:
Code:
Jetzt geht es. Ausgabe:
@echo off
set RETAINBACKUPS=15 set BACKUPDIR=D:\ if not exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) pause for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD /O-D "%BACKUPDIR%" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) pause rem freien Speicherplatz anzeigen rem for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i rem echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB pause
Code:
Bei
rmdir /S /Q "D:\\$RECYCLE.BIN"
rmdir /S /Q "D:\\System Volume Information"
Code:
Ich habe jetzt die Verzeichnisse
set RETAINBACKUPS=1
Code:
Gebe ich an er soll 3 behalten, bekomme ich die Ausgabe:
2019-05-10 13-41
2019-05-18 13-41 2019-05-21 13-41
Code:
Das passt. Aber natürlich soll er die Systemordner nicht löschen.
rmdir /S /Q "D:\\$RECYCLE.BIN"
rmdir /S /Q "D:\\System Volume Information" Gebe ich an er soll 1 behalten, bekomme ich die Ausgabe:
Code:
Er löscht also das älteste und das neuste.
rmdir /S /Q "D:\\2019-05-10 13-41"
rmdir /S /Q "D:\\2019-05-21 13-41" rmdir /S /Q "D:\\$RECYCLE.BIN" rmdir /S /Q "D:\\System Volume Information"
Code:
liefert mir
dir /AD
Code:
Wenn ich dir so hinbekomme, dass es die Systemverzeichnisse nicht anzeigt, wäre das Problem wahrscheinlich gelöst.
D:\>dir /AD
Datenträger in Laufwerk D: ist Backup Volumeseriennummer: B860-37EC Verzeichnis von D:\ 2019-05-21 13:31 <DIR> $RECYCLE.BIN 2019-05-21 20:00 <DIR> 2019-05-10 13-41 2019-05-21 20:00 <DIR> 2019-05-18 13-41 2019-05-21 14:58 <DIR> 2019-05-21 13-41 2019-05-21 13:30 <DIR> System Volume Information 0 Datei(en), 0 Bytes 5 Verzeichnis(se), 833.302.568.960 Bytes frei Habs:
Code:
Nur will er mir bei einem Backup immer noch das älteste und neuste löschen.
dir /AD
|
AW: Batchscript zum automatischen Löschen von Dateien
Deine Verzeichnisse fangen doch alle irgendwie mit 2 an (Jahreszahl).
Ergänze mal das Dir um 2*.*, damit die anderen Verzeichnisse nicht mit ausgegeben werden, davon willst Du ja auch (höchstwahrscheinlich) nix löschen. Ein im realen Leben ausgeführtes
Code:
käme vermutlich nicht so gut :-(
rmdir /S /Q "D:\\System Volume Information"
Eventuell
Code:
@echo off
rem Anzahl der Verzeichnisse, die uebrig bleiben sollen? set RETAINBACKUPS=15 rem ohne Backslash am Ende, der wird später mit den Verzeichnisnamen angehängt. set BACKUPDIR=D: if not exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) pause for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-r-s-h /O-D 2*.* "%BACKUPDIR%" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) pause rem freien Speicherplatz anzeigen rem for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i rem echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB pause |
AW: Batchscript zum automatischen Löschen von Dateien
Backup im Root eines Laufwerks hatte ich auch noch nicht. Das sollte recht einfach zu beheben sein, wenn du die Syntax deiner Verzeichnisse mit einbeziehst:
Code:
Übrigens lässt sich "System Volume Information" nur mit SYSTEM-Rechten betreten und daher auch mit Adminrechte nicht löschen. Nichtsdestotrotz ist es natürlich besser, wenn das erst gar nicht beachtet wird.
... IN ('dir /B /AD /O-D "%BACKUPDIR%\*-*-* *-*" 2^>NUL') ...
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Ausgangssituation:
Code:
Mit
2019-05-10 13-41
2019-05-18 13-41 2019-05-21 13-41
Code:
...bekomme ich:
@echo off
set RETAINBACKUPS=1 set BACKUPDIR=D:\ if not exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) rem freien Speicherplatz anzeigen for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB echo. rem alte Backups loeschen choice /M "Alte Sicherung(en) loeschen?" /C JN if %ERRORLEVEL% == 1 goto DEL_OLDEST if %ERRORLEVEL% == 2 goto DO_BACKUP :DEL_OlDEST echo Loesche alte Sicherungen... echo. for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-r-s-h /O-D 2*.* "%BACKUPDIR%" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) pause
Code:
Ächtz.
Freier Speicherplatz auf Laufwerk D: 833 GB
Alte Sicherung(en) loeschen? [J,N]?J Loesche alte Sicherungen... rmdir /S /Q "D:\\2019-05-18 13-41" rmdir /S /Q "D:\\2019-05-10 13-41" rmdir /S /Q "D:\\2019-05-10 13-41" rmdir /S /Q "D:\\2019-05-21 13-41" rmdir /S /Q "D:\\2019-05-21 13-41" Drücken Sie eine beliebige Taste . . . Er soll fünf behalten, es sind drei vorhanden und er will die neuste Sicherung zwei mal löschen. |
AW: Batchscript zum automatischen Löschen von Dateien
Weiß nicht, ob mein Beitrag von 20:31 übersehen wurde. Mit dem dort gegebenen Pattern sollte es klappen.
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Das Problem scheint aber nicht das Pattern zu sein, sondern die doppelte Aufführung der Verzeichnisse im Dir-Ergebnis.
Es werden alle Verzeichnisse zwei mal ausgegeben und davon wird dann das Erste übersprungen. 3 Verzeichnisse * 2 = 6 minus dem 1. = 5 Verzeichnisse in der Ausgabe. Wie sieht das Ergebnis von
Code:
auf der Kommandozeile aus?
for /F "skip=%RETAINBACKUPS% delims=" %F IN ('dir /B /AD-r-s-h /O-D "%BACKUPDIR%\2???-??-?? ??-??"') DO echo rmdir /S /Q "%BACKUPDIR%\%F"
|
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Erst muss ich mein Windows wieder zu Laufen bringen. Nach einem Windows Update ist er bei der Konfiguration des Updates hängen geblieben.
|
AW: Batchscript zum automatischen Löschen von Dateien
Mit
Code:
bekomme ich:
for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-r-s-h /O-D *-*-* *-* "%BACKUPDIR%" 2^>NUL') DO (
echo rmdir /S /Q "%BACKUPDIR%\%%F" )
Code:
bei: set RETAINBACKUPS=1
Alte Sicherung(en) loeschen? [J,N]?J
Loesche alte Sicherungen... rmdir /S /Q "D:\\2019-05-18 13-41" rmdir /S /Q "D:\\2019-05-18 13-41" rmdir /S /Q "D:\\2019-05-10 13-41" rmdir /S /Q "D:\\2019-05-10 13-41" rmdir /S /Q "D:\\2019-05-10 13-41" rmdir /S /Q "D:\\2019-05-21 13-41" rmdir /S /Q "D:\\2019-05-21 13-41" rmdir /S /Q "D:\\2019-05-21 13-41" Drücken Sie eine beliebige Taste . . . Mit 2???-??-?? ??-?? findet er gar nichts. |
AW: Batchscript zum automatischen Löschen von Dateien
Deswegen schrieb ich ja das Pattern hinter das %BACKUPDIR%. Siehe Beitrag #12.
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Autsch. Ganz übersehen.
|
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
![]() Noch ein Versuch ohne die überflüssige Klammerung für die Kommandozeile:
Code:
Der Dir-Befehl verlangt keine zwei Parameter, das %BACKUPDIR% hinter dem Pattern für die Verzeichnisnamen ist kontraproduktiv.
for /F "skip=1 delims=" %F IN ('dir /B /AD-r-s-h /O-D "%BACKUPDIR%\*-*-* *-*" 2^>NUL') DO echo rmdir /S /Q "%BACKUPDIR%\%F"
|
AW: Batchscript zum automatischen Löschen von Dateien
Keine Ausgabe mit:
Code:
@echo off
set RETAINBACKUPS=1 set BACKUPDIR=D:\ if not exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) rem freien Speicherplatz anzeigen for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB echo. rem alte Backups loeschen choice /M "Alte Sicherung(en) loeschen?" /C JN if %ERRORLEVEL% == 1 goto DEL_OLDEST if %ERRORLEVEL% == 2 goto DO_BACKUP :DEL_OlDEST echo Loesche alte Sicherungen... echo. for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-S /O-N "%BACKUPDIR%\*-*-* *-*" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) pause |
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
Zitat:
Zitat:
Zitat:
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Ergebnis Kommandozeile ohne Klammerung?
|
AW: Batchscript zum automatischen Löschen von Dateien
Habs:
Code:
So funktioniert es.
@echo off
set RETAINBACKUPS=2 set BACKUPDIR=D:\ d: if not exist "%BACKUPDIR%" ( echo. echo "%BACKUPDIR%" existiert nicht. echo. pause goto :EOF ) rem freien Speicherplatz anzeigen for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB echo. rem alte Backups loeschen choice /M "Alte Sicherung(en) loeschen?" /C JN if %ERRORLEVEL% == 1 goto DEL_OLDEST if %ERRORLEVEL% == 2 goto DO_BACKUP :DEL_OlDEST echo Loesche alte Sicherungen... echo. for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-S /O-N "*" 2^>NUL') DO ( echo rmdir /S /Q "%BACKUPDIR%\%%F" ) pause |
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
Zitat:
Zitat:
|
AW: Batchscript zum automatischen Löschen von Dateien
Ja, man kann auch ein
Code:
vorneweg machen, aber trotzdem funktioniert es nach meinen Tests auch, das Pattern direkt an das dir-Kommando zu geben.
cd /D "%BACKUPDIR%"
Vielleicht war das Wegfiltern der Fehler für die Tests doch nicht so gut? Andererseits lässt sich ja das dir-Kommando auch so auf die CMD kopieren und einzeln testen (dann sinnvollerweise ohne Umleitung von StdError) ... Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Egal. Jetzt funktioniert es jedenfalls.
Vielen Dank für eure Hilfe. |
AW: Batchscript zum automatischen Löschen von Dateien
Auf eine Sache möchte ich in Bezug auf das fehlende bzw. breit gefasste Pattern noch hinweisen: Damit werden alle Verzeichnisse ausgegeben, nicht nur die automatisch erstellten Backupverzeichnisse. Achte also darauf, dass dort keine anderen Dinge rumliegen, sonst wunderst du dich, wenn auf einmal Verzeichnisse bzw. ganze Strukturen verschwinden. Auch deshalb ist es besser, sowohl ein Pattern anzugeben, als auch in ein Verzeichnis zu sichern, das ausschließlich für Backups gedacht ist (und sonst nichts rumgeschrieben wird).
Zitat:
Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Das ist schon in Ordnung. Auf dem Laufwerk kommen nur Backups. Sie hat auch die Bezeichnung "Backup". Da noch mal einen Unterordner "Backup" anzulegen wäre unsinnig.
|
AW: Batchscript zum automatischen Löschen von Dateien
Liste der Anhänge anzeigen (Anzahl: 1)
Fürs Debuggen von Batch-Dateien hatte ich mal einen Debugger im Delphi-Stil geschrieben, siehe
![]() Der hilft bei Problemen mit der Befehls-Syntax natürlich eher weniger, ist aber gut bei der Verfolgung des Programmflusses und der Variablen-Inhalte. |
AW: Batchscript zum automatischen Löschen von Dateien
Oh. Das klingt gut. Beim nächsten mal. :-D
|
AW: Batchscript zum automatischen Löschen von Dateien
Je nach Datenmenge ist das ganze aber ziemlich uneffizient, weil jedes mal alles in das Unterverzeichnis kopiert wird und die überzähligen Verzeichnisse komplett gelöscht werden.
Der Vorteil von robocopy ist ja gerade, dass er Verzeichnisse quasi synchronisieren kann (inkl. Löschen von nicht mehr vorhandenen Dateien). Wäre es nicht sinnvoller, x feste Verzeichnisse anzulegen und über robocopy abhängig vom Tag da jeweils reinzukopieren? |
AW: Batchscript zum automatischen Löschen von Dateien
Ich wollte keine Synchronisation. Das passt schon so für mich, wie ich es jetzt habe.
|
AW: Batchscript zum automatischen Löschen von Dateien
Der Vollständigkeit halber hier das vollständige Script für alle die es brauchen:
Code:
@echo off
rem Projekt : Backupskript NAS auf Zeus rem Autor : Michael Puff <mail@michael-puff.de> rem Datum : 2019-05-21 set RETAINBACKUPS=4 set h=%time:~0,2% set m=%time:~3,2% Set CTIME=%h%-%m% echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º º echo º NAS Backup º echo º ÍÍÍÍÍÍÍÍÍÍ º echo º º echo ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ echo º º echo º Sichert Daten vom Herakles (NAS) º echo º nach Zeus (PC Michael) auf Backup Laufwerk D. º echo º º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo. rem freien Speicherplatz anzeigen for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set tmp=%%i echo Freier Speicherplatz auf Laufwerk D: %tmp:~0,3% GB echo. rem alte Backups loeschen choice /M "Alte Sicherung(en) loeschen?" /C JN if %ERRORLEVEL% == 1 goto DEL_OLDEST if %ERRORLEVEL% == 2 goto DO_BACKUP :DEL_OLDEST echo. echo Loesche alte Sicherungen... echo. for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD-S /O-N "*" 2^>NUL') DO ( echo Loesche %%F rmdir /S /Q "d:\%%F" ) :DO_BACKUP echo. echo Sicherung beginnen.. echo. rem VC Container trennen echo VC Container "Dokumente" trennen... veracrypt /d /l y /f /q echo. rem Sicherung beginnen md "D:\%date% %CTIME% robocopy "Z:" "D:\%date% %CTIME%" /MIR /A-:A /XD "Z:\#recycle" /V attrib "D:\%date% %CTIME%" /S /D -S -H echo. Pause |
AW: Batchscript zum automatischen Löschen von Dateien
Bei diesem Code musst du aber sicherstellen, dass das Arbeitsverzeichnis immer gleich dem Backupverzeichnis ist, denn das dir-Kommando listet die Inhalte vom Arbeitsverzeichnis, gelöscht wird aber in einem konkreten Pfad (dem Backupverzeichnis).
Wollt's nur nochmal gesagt haben, auch für andere Mitleser. PS: Bei dem md unten im Skript fehlt das schließende Quote. Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Zitat:
|
AW: Batchscript zum automatischen Löschen von Dateien
Diese Möglichkeiten hast du:
Code:
wobei bei letzterem am Ende noch ein popd zu ergänzen wäre (wenn auch nicht zwingend nötig). Es gibt subtile Unterschiede zwischen den Kommandos. Ersteres ändert spezifisch auf das Root von Laufwerk D:, zweiteres wechselt nur auf Laufwerk D: und zwar in das zuletzt dort benutzte Verzeichnis. Und das pushd packt das Verzeichnis auf den Verzeichnisstack und kann als einziges mit UNC-Pfaden umgehen (indem es selbigen als Netzlaufwerk mappt).
cd /D D:\
D: pushd D:\ Im Kontext des Skriptes (im oben geposteten) Stand ist das Ergebnis aller drei Varianten aber gleich. Grüße Dalai |
AW: Batchscript zum automatischen Löschen von Dateien
Dann werde ich die erste Möglichkeit nehmen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz