älteste Dateien aus Verzeichnis löschen
@echo off & setlocal Call GetAllDateTimeInfos /s :: (alle Variablen wie JJ, MM, TT etc sind gesetzt sind gesetzt) Set "LogFile=BatchSicherung\vogg_%JJ%%MM%%TT%_%hh%%min%.log" Set "NewBackup=BatchSicherung\vogg_%JJ%%MM%%TT%_%hh%%min%.db" echo %logfile%echo %newbackup%Call GetAllDateTimeInfos /u echo Datumswerte erstelltcd d:\AmicDB\Vogg\echo Ins Verzeichnis AmicDB Vogg gewechseltcopy vogg.db %NewBackup% >>%LogFile%IF ERRORLEVEL 1 goto FEHLER_beim_Copy echo DatenbankDatei korrekt kopiertFC /b vogg.db %NewBackup% >>%LogFile%IF ERRORLEVEL 1 goto FEHLER_beim_Vergleich :: wenn ok, dann Rechner runterfahren...echo DatenbankDatei korrekt verglichen::CALL C:\AMIC\Aeins\batch\Sichern_VOGG.bat ::echo Sicherungsdatei ausgeführtecho jetzt wird heruntergefahrenshutdown -s -f -t 05goto :eof :FEHLER_Beim_Copy ::evtl Blat.exe (Freewaretool zum Versenden von einfachen Mails vom CMD-Prompt aus) bitte Forumssuche benutzen oder eine Suchmaschine. echo "Fehler beim Kopieren..." >>%LogFile%goto :eof :FEHLER_Beim_Vergleich ::evtl Blat.exe (Freewaretool zum Versenden von einfachen Mails vom CMD-Prompt aus) bitte Forumssuche benutzen oder eine Suchmaschine. echo "Fehler beim Vergleich..." >>%LogFile%goto :eof
hi profis!!!
will zu dieser datei noch hinzufügen, dass die ältesten dateien aus diesem verzeichnis (zb älter als 50 tage) automatisch gelöscht werden sollen und auch aus dem papierkorb entfernt werden, um speicherplatz zu sparen
kann mir dabei irgendwer helfen?
vielen dank im voraus!!!!
lg silvia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 45513
Url: https://administrator.de/forum/aelteste-dateien-aus-verzeichnis-loeschen-45513.html
Ausgedruckt am: 26.12.2024 um 19:12 Uhr
3 Kommentare
Neuester Kommentar
Moin voxi,
grundsätzlich kann ich nur zu dem wirklich praktischen Tool DelAge32.exe raten,
das ich ich auch schon ein paar mal bei ähnlichen Fragestellungen hier im Forum empfohlen habe.
Wie ich grad gelesen habe, hat Horst Schaeffer auch gerade eine neue Version DelAge32.exe 2.0 bereitgestellt.
Obwohl schon ganz viele Nutzer auch an der bisherigen Version 1.5 nichts vermissen.
Der Vorteil gegenüber einer Batch-(im Sinne von *.bat-Datei)Verarbeitung ist eben die rekursive Verarbeitung, die in einem, noch dazu kompilierten Tool stattfindet.
In native Batch ist keine (schmerzfreie) Verarbeitung von Datumswerten machbar.. Hier muss man/frau mindestens auf die vorhandenen DateAdd()/DateDiff() der Light-Skriptsprachen zurückgreifen.
Davon die beliebteste ist sicherlich VBSkript.
Ein Beispiel (bzw. der erste Schritt) wäre ein kleiner VBS-Schnipsel zum Zusammenspiel mit einem Batch dieser Art:
Dieser VBS-Schnipsel würde für eine einzelne Datei das Alter in Tagen ausgeben.
Beispiel für eine Datei bzw für eine Liste von Dateien rekursiv unterhalb eines Verzeichnisses:
[Am CMD-Prompt]
Theoretisch ließe sich so ein Konstrukt im Batch nutzen:
[..im Batch...]
...dann würden alle Dateien älter als 50 Tage in allen Unterverzeichnissen unterhalb %SicherungsRoot% gelöscht.
Allerdings würde dann auch der Batch bei 10000 Dateien zu prüfenden Dateien im Verzeichnis auch 10000 Mal das VBS-Skript aufrufen.
Das istBullshit suboptimal und stinkelangsam ineffizient.
Der nächste Schritt wäre folgerichtig, dem VBSkript nicht einzelne Dateinamen zu übergeben, sondern einen Verzeichnisnamen, in dem dann alle Dateien mit mehr als 50 Nächten auf dem Buckel gefälligst gelöscht werden.
Der übernächste Schritt wäre, das Ganze eben auch rekursiv zu machen.
Alles kein Hexenwerk...aber eben auch schon ein oder zweimal erfunden worden im Lauf der Jahrhunderte.
Womit ich wieder bei meiner Empfehlung DelAge32.exe wäre.
Liebe Grüße
Biber
grundsätzlich kann ich nur zu dem wirklich praktischen Tool DelAge32.exe raten,
das ich ich auch schon ein paar mal bei ähnlichen Fragestellungen hier im Forum empfohlen habe.
Wie ich grad gelesen habe, hat Horst Schaeffer auch gerade eine neue Version DelAge32.exe 2.0 bereitgestellt.
Obwohl schon ganz viele Nutzer auch an der bisherigen Version 1.5 nichts vermissen.
Der Vorteil gegenüber einer Batch-(im Sinne von *.bat-Datei)Verarbeitung ist eben die rekursive Verarbeitung, die in einem, noch dazu kompilierten Tool stattfindet.
In native Batch ist keine (schmerzfreie) Verarbeitung von Datumswerten machbar.. Hier muss man/frau mindestens auf die vorhandenen DateAdd()/DateDiff() der Light-Skriptsprachen zurückgreifen.
Davon die beliebteste ist sicherlich VBSkript.
Ein Beispiel (bzw. der erste Schritt) wäre ein kleiner VBS-Schnipsel zum Zusammenspiel mit einem Batch dieser Art:
'----GetFileAge.vbs
Set fso = CreateObject ("Scripting.FileSystemObject")
Set f = fso.getfile(wscript.arguments(0))
WScript.echo DateDiff("d", f.DateLastModified, now())
Set fso = nothing
Dieser VBS-Schnipsel würde für eine einzelne Datei das Alter in Tagen ausgeben.
Beispiel für eine Datei bzw für eine Liste von Dateien rekursiv unterhalb eines Verzeichnisses:
[Am CMD-Prompt]
>for /f %f in ('cscript //nologo GetFileAge.vbs "datetime.txt"') do @echo %f
239
>for /r "d:\temp" %i in (*.txt) do @for /f %f in ('cscript //nologo GetfileAge.vbs "%i" ') do @echo %f %i
13 d:\temp\Beispiel.txt
69 d:\temp\benutzer1.txt
147 d:\temp\benutzer2.txt
239 d:\temp\datetime.txt
50 d:\temp\logfile.txt
258 d:\temp\MessSub.txt
62 d:\temp\$home\logs\log.txt
586 d:\temp\Backup1\Admincopy\Anwendungsdaten\Microsoft\Internet Explorer\brndlog.txt
586 d:\temp\Backup1\Admincopy\Anwendungsdaten\Microsoft\Internet Explorer\rsoplog.txt
....
Theoretisch ließe sich so ein Konstrukt im Batch nutzen:
[..im Batch...]
...
for /r "%SicherungsRoot%" %%i in (*.*) do (
for /f %%f in ('cscript //nologo GetFileAge.vbs "%%i" ') do If %%f GTR 50 del /q "%%i" >nul
)
...dann würden alle Dateien älter als 50 Tage in allen Unterverzeichnissen unterhalb %SicherungsRoot% gelöscht.
Allerdings würde dann auch der Batch bei 10000 Dateien zu prüfenden Dateien im Verzeichnis auch 10000 Mal das VBS-Skript aufrufen.
Das ist
Der nächste Schritt wäre folgerichtig, dem VBSkript nicht einzelne Dateinamen zu übergeben, sondern einen Verzeichnisnamen, in dem dann alle Dateien mit mehr als 50 Nächten auf dem Buckel gefälligst gelöscht werden.
Der übernächste Schritt wäre, das Ganze eben auch rekursiv zu machen.
Alles kein Hexenwerk...aber eben auch schon ein oder zweimal erfunden worden im Lauf der Jahrhunderte.
Womit ich wieder bei meiner Empfehlung DelAge32.exe wäre.
Liebe Grüße
Biber