Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Batchscript zum automatischen Löschen von Dateien (https://www.delphipraxis.net/200747-batchscript-zum-automatischen-loeschen-von-dateien.html)

DenkDirNix 22. Mai 2019 07:19

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 https://www.dropbox.com/sh/k34v4uhwd...HdEMM4I4a?dl=0. Sollte für unsereiner also einigermaßen intuitiv bedienbar sein. Soweit man so etwas über die Gattung "Debugger" überhaupt sagen kann.

Der hilft bei Problemen mit der Befehls-Syntax natürlich eher weniger, ist aber gut bei der Verfolgung des Programmflusses und der Variablen-Inhalte.

Luckie 22. Mai 2019 09:26

AW: Batchscript zum automatischen Löschen von Dateien
 
Oh. Das klingt gut. Beim nächsten mal. :-D

bra 22. Mai 2019 13:07

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?

Luckie 22. Mai 2019 14:02

AW: Batchscript zum automatischen Löschen von Dateien
 
Ich wollte keine Synchronisation. Das passt schon so für mich, wie ich es jetzt habe.

Luckie 23. Mai 2019 08:59

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

Dalai 23. Mai 2019 19:35

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

Luckie 23. Mai 2019 20:23

AW: Batchscript zum automatischen Löschen von Dateien
 
Zitat:

Zitat von Dalai (Beitrag 1432993)
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.

Danke für den Hinweis. Am Anfang noch ein D: ?

Dalai 23. Mai 2019 21:12

AW: Batchscript zum automatischen Löschen von Dateien
 
Diese Möglichkeiten hast du:
Code:
cd /D D:\
D:
pushd D:\
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).

Im Kontext des Skriptes (im oben geposteten) Stand ist das Ergebnis aller drei Varianten aber gleich.

Grüße
Dalai

Luckie 23. Mai 2019 21:16

AW: Batchscript zum automatischen Löschen von Dateien
 
Dann werde ich die erste Möglichkeit nehmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz