Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Batch Datei: Alte Dateien nach gewissen Alter löschen

Mitglied: Eric123
Hallo,

ich bräuchte eine Batch Datei, welche andere Dateien nach einem gewissen Alter löscht!

Habe über google leider nichts gefunden...

Vielen Dank im vorraus

Eric

Content-Key: 6427

Url: https://administrator.de/contentid/6427

Ausgedruckt am: 21.06.2021 um 15:06 Uhr

21 Kommentare
Mitglied: indie
hallo du,

es gibt eine *.exe datei die kannst du dir in den system32 ordner hineinkopieren

das heisst "DelAge32" ist 10 KB gross mit dieser exe kannst du dann im batch wenn du die datei aufrufst die tage einstellen wenn er sie löschen soll


DelAge32 löscht Dateien mit einem Mindestalter (Anzahl Tage).


Syntax:
DelAge32 dateibegriff tage [/preview] [/create] [/includeRO] [/recurse] [/subonly] [/quiet]
Die Dateien werden per Suchmuster ausgewählt ("*.*" für alle Dateien), mit Angabe des relativen oder absoluten Pfades.

Beispiel:
DelAge32 C:\irgend\wo\*.* 100 /recurse
Gelöschte Dateien werden mit Alter (Anzahl Tage) aufgelistet. Der Output kann in eine Datei umgeleitet werden.
Mit Option /preview kann die Aktion gefahrlos getestet werden, ohne wirklich zu löschen.

quelle: http://home.mnet-online.de/horst.muc/wbat32d.htm#delage
Mitglied: bertschle0
Danke ich habe eine Lösung gefunden

Ich habe mir das Programm delage32 heruntergeladen


<a href="http://home.mnet-online.de/horst.muc/win/indexd.htm;>DelAge32&l ..."
Mitglied: colinardo
Hier eine Version per Visual Basic Script:

Dieses Script löscht Dateien älter als 30 Tage!
Als Parameter einfach das zu verarbeitende Verzeichnis übergeben...

'
Set myArguments = WScript.Arguments

If myArguments.Count <> 1 Then
call DisplayInfo
Wscript.Quit (1)
End if

Dim heute, olddate
heute = FormatDateTime(Date, 2)
olddate = DateAdd("d", -30, heute)

set objFS = CreateObject("Scripting.FilesystemObject")
set myFolder = objFS.GetFolder(myArguments(0))
set myFiles = myFolder.Files

for each myfile in myFiles
If myFile.DateCreated < olddate then
myFile.Delete
end if
next

Sub DisplayInfo
MsgBox "Usage: deleteoldfiles.vbs [FolderPath]", vbExclamation, "Missing Argument"
End Sub
'
Mitglied: bertschle0
Vielen Dank.

Ist auch ne gute Idee
Mitglied: enzo
Also irgendwie komme ich mit den Antworten hier im Thread nicht klar - funktioniert jedenfalls bei mir nicht...

Ich möchte gerne Verzeichnisse, die älter als 30 Tage sind, löschen und zwar:
Habe ein Storage Center eingerichtet und auf allen PC`s im Netzwerk das Sicherungslaufwerk angelegt - jeder Rechner kann also darauf zu greifen und seine Sicherungen ablegen, welche auf eine interne 2. Platte im Storage gespiegelt werden.

Jeder Rechner hat ein eigenes Sicherungs-Batchprogramm, welches ich folgender Maßen aufgebaut habe:

xset Date=^date
set Ziel="N:\Rechner1\%Date%\"
md %ziel%

xcopy /s /y /d /e C:\irgendeineDatei\*.* %Ziel%\irgendeineDatei\*.*

Somit wird ein Ordner erstellt, der den Rechnernamen und das Sicherungsdatum trägt und darin werden dann die zu sichernden Dateien oder auch Ordner kopiert

Nun soll nach ca. 30 Tagen die 1. Sicherung gelöscht werden, damit das Laufwerk nach 6 Monaten nicht wegen Überfüllung geschlossen werden muss - wie muss ich das jetzt in die Batchdatei einfügen?

Für eine genaue Anleitung wäre ich sehr dankbar, da ich mich mit Batch und DOS nur sehr bedingt auskenne...

Vielen Dank im Voraus...

Gruß Enzo
Mitglied: Biber
Moin Enzo,

leider habe ich keine gesicherte Erkenntnis, wie Dein Datumsformat und somit auch die Dateimaske der angelegten Unterverzeichnisse aussieht.
Ich unterstelle mal hier im Beispiel ein Wildcard-Format von "??.??.????" für z.B. Ordner wie 09.10.2006. Ggf. anpassen.

Eine mögliche Strategie wäre:
- über den DIR-Befehl eine Liste aller Dateien mit der richtigen Namenskonvention erzeugen
- und zwar mit den Parametern "/AD" (nur Verzeichnisse), "/O-D" Sortierung nach Datum absteigend, "/TC" nach Erzeugungsdatum und "/b" wie Billich-Ausführung ohne Details.
- von dieser Liste werde ich die ersten 30 Einträge überspringen - das sind die 30 Sicherungen, die bleiben sollen.
Den Rest tret ich in die Tonne.

Bei dieser Strategie gehe ich wissentlich nicht über das Kriterium "älter als 30 Tage" (es ist lumpig, mit Datum im Batch zu rechnen), sondern über die Bedingung: "mehr als 30 Sicherungen vorhanden".

Auf Bätchisch:

oder, Variation des Themas...

Es bietet sich natürlich an, das Verzeichnis in der DIR-Anweisung wieder über eine Variable anzusprechen:
set "zielRoot=N:\Rechner1"
-bzw-
Set "zielRoot=n:\%computername%"

Es gibt auch einige andere Beiträge, in denen das Thema "Dateien älter als x Tage löschen" behandelt wird - bitte über Forumssuche finden.

Gruß
Biber
Mitglied: colinardo
Hier nochmal das selbe Script wie oben , nur entsprechend für Ordner.

Einfach das Script mit folgenden Parametern in der Batchdatei aufrufen:

----> deleteoldfolders.vbs "C:\Dein Backup Root-Folder" 30

Die Anzahl der Tage kannst du mit dem zweiten Parameter festlegen! In diesem Fall 30 Tage.


Gruß
Softmeister
Mitglied: bertschle0
am besten gehts immer noch mit delage32
Mitglied: Biber
am besten gehts immer noch mit delage32

...aber auch die zweitbesten Lösungen in diesem Board haben ihren Reiz... ;-) face-wink
Mitglied: enzo
Danke erst einmal für die schnelle Hilfe!

Ich habe aber noch folgendes Problem:

Habe die Batchdatei wie folgt geschrieben:

for /f "skip=12" %%i in ('dir /b /o-D /ad /tc "C:\Laptop\??.??.????"') do rd /s /q %%i

xset Date=^date
set Ziel="c:\Laptop\%Date%\"
md %ziel%

xcopy /s /y /d /e C:\temp\*.* %Ziel%\temp\*.*
xcopy /s /y /d /e C:\Nvidia\*.* %Ziel%\Nvidia\*.*

...sind nur Testordner...

Jetzt habe ich noch einen Ordner: C:\Laptop
In dem sind 13 Ordner mit der Bezeichnung: 09.10.2006 bis 21.10.2006

Nu sollte also der Ordner 09.10.2006 gelöscht werden - macht es aber nicht!
Statt dessen bekomm ich die Fehlermeldung:

http://home.versanet.de/~d-rieke/forum/Fehler_Batch.jpg

Nu weiß ich auch nicht mehr weiter... Vielleicht bin ich einfach nur zu dämlich!

Ich hoffe, ihr habt noch ein wenig Geduld mit mir...

delage32 hatte ich auch schon ausprobiert - steige ich aber irgendwie nicht hinter wie ich das in die Batchdatei rein bekommen soll - alle Versuche sind gescheitert...

Trotzdem vielen Dank für eure Bemühungen - weiß ich echt zu schätzen!

Gruß Enzo
Mitglied: bertschle0
DelAge32 C:\irgend\wo\*.* 100 /recurse

Dies ist der Delage32 befehl

Hier bekommst du delage32 (musst du nur noch in C:\Windows kopieren)

http://claudiob.at/download/updownfiles/bastard/Software/delage32.exe

Batchdatei sollte so aussehen

@echo off
cls
delage32 C:\temp\*.* 30 /recurse >log.txt
pause

Mit echo off bewirkst du das die Befehle nicht angezeigt werden.
cls ist für einen suaberen bildschirm.
Hier werden dir alle files gelöscht die älter wie 30 tage sind.
Weiters hast du dann eine logdatei (log.txt)
Mit pause verhinderst du das das Fenster gleich zugeht wenn das Batch durchgelaufen ist
Mitglied: enzo
Habe es so gemacht:
1. delage32.exe in c:\Windows kopiert
2. 1. Zeile in Batchdatei= DelAge32 C:\Laptop\*.* 12 /recurse (rest wie oben beschrieben ohne den "if" Befehl

Systemdatum auf 09.12.2006 geändert und Datei erstellt.

Folge dessen müssten alle Dateien (von 09.10.2006 - 21.10.2006) gelöscht werden, da diese älter als 12 Tage sind - tut sich aber nix...

Das kann doch nicht so schwer sein - wo hab ich denn nu den Fehler drinne...
Mitglied: bertschle0
Probier mal:

@echo off
cls
delage32 C:\Laptop\*.* 12 /move C:\laptopdel >delage32log.txt
pause
Mitglied: enzo
ok - habs probiert!

Fazit:
1. Auf meinem Desktop wurde eine delage32log.txt erstellt die keinen Inhalt hat.
2. Im Verzeichnis C: wurde ein Verzeichnis erstellt mit dem Namen laptopdel - ebenfalls leer
3. Die Verzeichnisse, die gelöscht werden sollen sind immer noch da

Gruß Enzo
Mitglied: bertschle0
Probier mal:

@echo off
cls
delage32 C:\Laptop\*.* 12 /move C:\laptopdel
>delage32log.txt
pause

Sollte so aussehen

@echo off
cls
delage32 C:\Laptop\*.* 12 /move C:\laptopdel\ >C:\delage32log.txt
pause
Mitglied: enzo
Wieder das gleiche Ergebnis!
Datei und Verzeichnis erstellt - beides ohne Inhalt
Verzeichnisse immer noch da...
Mitglied: bertschle0
Nimm mal irgendeinen beliebigen ordner (Empfehlung: C:\temp bzw C:\windows\temp)

heir sind oft sehr alte dateien drin.

wenns dann nicht geht weiß ich auch nicht weiter
Mitglied: colinardo
Hallo Enzo,
du hast einen kleinen Fehler begangen....
Da die Batch die Befehle immer in dem Verzeichnis ausführt im dem du die Batch ausführst, kommt der "rd" Befehl nicht weiter weil das Zielverzeichnis in deinem Fall ja nicht auf dem Desktop liegt. Also musst du noch das Zielverzeichnis im "rd" Befehl ergänzen:


... oder wechsle mit der Batch vorher in das Zielverzeichnis mit "cd C:\Laptop"


Hoffe das hilft dir weiter , deine Batch ohne Hilfsmittel dritter Programme zu verwirklichen...
Merke: Durch Fehler lernt man!

Greets
;-] Softmeister
Mitglied: Biber
Thx, Softmeister,

genau den hab ich vergessen - den Unterverzeichnis-Parent-Ordner vor dem letzten "%%i".
Kommt davon, dass ich immer nur dann teste, "wenn es erforderlich ist.."

Muss noch an meinen guten Vorsätzen arbeiten :-D face-big-smile

Gruß
Biber
Mitglied: enzo
Es geht :-) face-smile

Huhuuuh.....

Vielen, vielen Dank...

Werde jedenfalls wiederkommen :-) face-smile

Gruß Enzo
Heiß diskutierte Beiträge
Router & Routing
Deutsche Glasfaser. NT direkt an pfSense möglich oder besser Kaskade?
fnbaluVor 1 TagFrageRouter & Routing23 Kommentare

Hallo zusammen, am kommenden Mittwoch wird bei mir der Deutsche Glasfaser Anschluss aktiviert. Anfangs wird darüber kein Telefon laufen, aber vielleicht später. Mir stellt sich ...

Notebook & Zubehör
Alt-Laptop Vergleichsmeinungen
winlinVor 1 TagFrageNotebook & Zubehör12 Kommentare

Hallo zusammen Habe zwei Laptops und einen mini pc und würde gerne wissen was ihr zu den beiden Laptops sagt??? Was dürfte ich Max an ...

Batch & Shell
Problem mit einer Batchdatei
stevie72Vor 1 TagFrageBatch & Shell11 Kommentare

Guten Abend zusammen! Ich habe ein problem eine Batch ans laufen zu bekommen. Folgende Problem Stellung: Wir haben etwa 20 Rechner in der Bibliothek. Darauf ...

Firewall
OpenVPN-Problem
gelöst ingorosVor 22 StundenFrageFirewall20 Kommentare

Hallo, habe gestern mit ipfire einen OpenVPN-Server aufgesetzt. Der läuft auch wunderbar. Sowohl Win7, wie auch Win10pro können sich problemlos anmelden. Ein Laptop mit Win10 ...

Windows 10
Remotedesktopzugang mit Openvpn sicher?
LegofrauVor 1 TagFrageWindows 108 Kommentare

Guten Morgen, wie sicher ist es wenn man Remotedesktopzugang durch einen Openvpn Tunnel betreibt? Der Openvpn Tunnel ist mit aktuellen Zertifikaten abgesichert. Der Pc hat ...

Windows Server
AD Replikation zwischen Standorten schlägt fehl nach Level auf 2008R2
diematrix125Vor 1 TagFrageWindows Server14 Kommentare

Hallo zusammen, ich habe ein (mittelschweres?) Problem mit dem AD. Ausgangssituation: Standort A: 3 DCs unter Win 2008R2 Standort B: 1 DC unter Win 2008R2 ...

Windows 10
Win 10 Fehler 0xc000000e und bootmbr fehlt
dressaVor 1 TagFrageWindows 1010 Kommentare

Hallo miteinander. Ein guter Kollege von mir kam auf mich zu weil sein PC mit wichtigen Daten nicht mehr läuft. Er hatte laut seinen Aussagen ...

LAN, WAN, Wireless
Gastnetzwerk für Restaurant mit FritzBox 4040
gelöst Net-ZwerKVor 6 StundenFrageLAN, WAN, Wireless11 Kommentare

Moin! Ich soll in einem kleinen Restaurant ein WLAN als Gastnetz einrichten. Aktuell ist vorhanden: Telekom Digitalisierungsbox Premium im Keller (macht ein WLAN, welches der ...