Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Datei: Alte Dateien nach gewissen Alter löschen

Frage Entwicklung Batch & Shell

Mitglied: Eric123

Eric123 (Level 1) - Jetzt verbinden

02.02.2005, aktualisiert 10.10.2006, 68364 Aufrufe, 21 Kommentare

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
Mitglied: indie
10.03.2005 um 15:10 Uhr
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
Bitte warten ..
Mitglied: bertschle0
13.01.2006 um 10:13 Uhr
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 ..."
Bitte warten ..
Mitglied: colinardo
26.07.2006 um 08:33 Uhr
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
'-------------------------------------------------------------------
Bitte warten ..
Mitglied: bertschle0
26.07.2006 um 08:51 Uhr
Vielen Dank.

Ist auch ne gute Idee
Bitte warten ..
Mitglied: enzo
08.10.2006 um 23:34 Uhr
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
Bitte warten ..
Mitglied: Biber
09.10.2006 um 09:57 Uhr
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:
01.
.... 
02.
for /f "skip=30" %%i in ('dir /b /o-D /ad /tC "N:\Rechner1\??.??.????"') do rd /s /q %%i 
03.
:. .[hier Dein bisheriger Schnipsel ....]
oder, Variation des Themas...
01.
... 
02.
for /f %%i in ('dir /b /o-D /ad /tC "N:\Rechner1\??.??.????"^|more /e +30') do rd /s /q %%i 
03.
:. .[hier Dein bisheriger Schnipsel ....]
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
Bitte warten ..
Mitglied: colinardo
09.10.2006 um 11:51 Uhr
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.

01.
Set myArguments = WScript.Arguments 
02.
 
03.
If myArguments.Count <> 2 Then	 
04.
	call DisplayInfo 
05.
	Wscript.Quit (1) 
06.
End if 
07.
 
08.
Dim heute, olddate 
09.
heute = FormatDateTime(Date, 2) 
10.
olddate = DateAdd("d","-" & myArguments(1), heute) 
11.
 
12.
set objFS = CreateObject("Scripting.FilesystemObject") 
13.
set myFolder = objFS.GetFolder(myArguments(0)) 
14.
set mySubfolders = myFolder.Subfolders 
15.
 
16.
for each subfolder in mySubfolders 
17.
	If subfolder.DateCreated < olddate then 
18.
		subfolder.Delete 
19.
	end if 
20.
next  
21.
 
22.
Sub DisplayInfo 
23.
	MsgBox "Usage: deleteoldfolders.vbs [FolderPath] [Anzahl Tage]", vbExclamation, "Missing Arguments" 
24.
End Sub 
25.
 
Gruß
Softmeister
Bitte warten ..
Mitglied: bertschle0
09.10.2006 um 15:08 Uhr
am besten gehts immer noch mit delage32
Bitte warten ..
Mitglied: Biber
09.10.2006 um 15:30 Uhr
am besten gehts immer noch mit delage32

...aber auch die zweitbesten Lösungen in diesem Board haben ihren Reiz...
Bitte warten ..
Mitglied: enzo
09.10.2006 um 22:42 Uhr
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
Bitte warten ..
Mitglied: bertschle0
09.10.2006 um 22:55 Uhr
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
Bitte warten ..
Mitglied: enzo
09.10.2006 um 23:15 Uhr
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...
Bitte warten ..
Mitglied: bertschle0
09.10.2006 um 23:21 Uhr
Probier mal:

@echo off
cls
delage32 C:\Laptop\*.* 12 /move C:\laptopdel >delage32log.txt
pause
Bitte warten ..
Mitglied: enzo
09.10.2006 um 23:33 Uhr
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
Bitte warten ..
Mitglied: bertschle0
09.10.2006 um 23:37 Uhr
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
Bitte warten ..
Mitglied: enzo
09.10.2006 um 23:47 Uhr
Wieder das gleiche Ergebnis!
Datei und Verzeichnis erstellt - beides ohne Inhalt
Verzeichnisse immer noch da...
Bitte warten ..
Mitglied: bertschle0
09.10.2006 um 23:48 Uhr
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
Bitte warten ..
Mitglied: colinardo
10.10.2006 um 09:04 Uhr
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:

01.
 
02.
for /f "skip=12" %%i in ('dir /b /o-D /ad /tc "C:\Laptop\??.??.????"') do rd /s /q C:\Laptop\%%i 
03.
 
... 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
Bitte warten ..
Mitglied: Biber
10.10.2006 um 10:39 Uhr
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

Gruß
Biber
Bitte warten ..
Mitglied: enzo
10.10.2006 um 21:44 Uhr
Es geht

Huhuuuh.....

Vielen, vielen Dank...

Werde jedenfalls wiederkommen

Gruß Enzo
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
14 Tage alte Dateien automatisch löschen - Shell (1)

Frage von traller zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...