![]() |
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 15:03 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