AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Batchscript zum automatischen Löschen von Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Batchscript zum automatischen Löschen von Dateien

Ein Thema von Luckie · begonnen am 21. Mai 2019 · letzter Beitrag vom 23. Mai 2019
Antwort Antwort
Seite 4 von 4   « Erste     234   
DenkDirNix

Registriert seit: 13. Dez 2018
71 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 22. Mai 2019, 08:19
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.
Miniaturansicht angehängter Grafiken
linesymbols.jpg  

Geändert von DenkDirNix (22. Mai 2019 um 09:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#32

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 22. Mai 2019, 10:26
Oh. Das klingt gut. Beim nächsten mal.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#33

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 22. Mai 2019, 14:07
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#34

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 22. Mai 2019, 15:02
Ich wollte keine Synchronisation. Das passt schon so für mich, wie ich es jetzt habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#35

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 23. Mai 2019, 09:59
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
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (23. Mai 2019 um 10:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#36

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 23. Mai 2019, 20:35
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#37

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 23. Mai 2019, 21:23
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: ?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#38

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 23. Mai 2019, 22:12
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#39

AW: Batchscript zum automatischen Löschen von Dateien

  Alt 23. Mai 2019, 22:16
Dann werde ich die erste Möglichkeit nehmen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr.
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