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 zum löschen von Ordner die älter als 30 Tage sind

Frage Entwicklung Batch & Shell

Mitglied: MrChaos

MrChaos (Level 1) - Jetzt verbinden

02.04.2008, aktualisiert 07.04.2008, 27473 Aufrufe, 8 Kommentare

Hallo Ihr alle,

ich möchte eine Batch Datei erstellen die mir Ordner samt Inhalt löscht die älter als 30 Tage sind.
Die Ordner liegen alle im Format JJJJMMTT vor.
Ich habe mich im Forum jetzt schon ein wenig umgeschaut und auch schon einige Beiträge gefunden die sich mit dem Thema beschäftigen.
Leider hat mir aber noch kein Beitrag so richtig weitergeholfen. Vermutlich liegt das aber auch an meinen Eingestaubten Fähigkeiten Batch Dateien zu erstellen.

Wie kann man das am besten realisieren?
Ich danke euch schon mal für eure Hilfe.

Gruß
Thomas
Mitglied: schregi82
02.04.2008 um 11:33 Uhr
Mit delage32.exe einfach umzusetzen:
http://home.mnet-online.de/horst.muc/wbat32d.htm

01.
delage32 Laufwerk:\Ordner\*.* 30 /recurse /rd

Interessant wäre was du mit älter als 30 Tage meinst.
Erstelldatum od. letzter Zugriff - den entsprechenden Schalter findest du auf der Website oben.

lg,
Bitte warten ..
Mitglied: MrChaos
02.04.2008 um 12:15 Uhr
also ... älter als 30 tage

ich habe Ordner die so aussehen

20080101
20080102
20080103
....
20080201
20080202
20080203
....
20080301
20080302
20080303
....

Diese Ordner werden täglich erstellt.
Ich möchte jetzt relativ zum heutigen Tag die Ordner löschen lassen die weiter als 30 Tage zurückliegen.
Sprich am 01.03.2008 sollen alle Ordner gelöscht werden die vor 01.02.2008 erstellt wurden.
Gadacht ist damit der Batch einmal pro Woche oder sogar Monat durchläuft und den "alten kram" löscht.
Hoffe das erklärt besser was ich mit 30 Tagen meine wenn nicht ... <- dann nochmal fragen
Bitte warten ..
Mitglied: Biber
02.04.2008 um 12:28 Uhr
Moin MrChaos,

DelAge32 wäre auch mein erster reflexartiger Tipp bei Deiner Anforderung.

Es sei denn, Du variierst die Strategie und definierst das Soll als "Es sollen immer die letzten 30 Sicherungsordner erhalten bleiben, alles andere kann wech."

Dazu haben wir in Batch & Shell auch ein paar Beispiele, die dann ohne externe Utilities funktionieren.

Sinngemäß so:
01.
for /f %%i in ('dir /ad /o-d /b x:\sichverz\200????? ^|more +30') do rd /s /q "x:\sichverz\%%i"
Bevor Du den einbaust, solltest Du es so am CMD-Prompt testen:
01.
for /f %i in ('dir /ad /o-d /b x:\sichverz\200????? ^|more +30') do @echo rd /s /q "x:\sichverz\%i"
Gruß
Biber
Bitte warten ..
Mitglied: MrChaos
02.04.2008 um 13:56 Uhr
@Biber
im Prinzip geht das sorum auch. Hauptsache die letzten 30 Sicherungen bleiben erhalten.

irgendwie ist da bei mir noch der Wurm drin.

ich habe jetzt den Verzeichnispfad angepasst. bzw auch ganz weggelassen da die bat im selben Ordner liegt wie die Testordner

geh ich richtig in der Annahme das ^|more +30' nur die Ordner anzeigen soll die älter als 30 Tage sind?
so mag es nicht funktionieren
Bitte warten ..
Mitglied: Biber
02.04.2008 um 14:21 Uhr
Moin MrChaos,

teste es schrittweise am CMD-Prompt:
01.
dir /ad /o-d /b x:\sichverz\200????? 
...das sollte alle Verzeichnisse mit der Namenskonvention "200?????" anzeigen sortiert nach Datum (die ältesten zuletzt).
Bei deiner (sinnvollen) Namenkonvention ginge natürlich auch eine Sortierung nach Name (also den Parameter /o-n statt /o-d setzen).

Wenn das bei Dir klappt, dann teste als nächstes
01.
dir /ad /o-d /b x:\sichverz\200????? |more +5
...das sollte alle Verzeichnisse wie oben bringen, aber die ersten 5 überspringen.
Wenn natürlich nur 3 oder 4 vorhanden sind, dann bleibt nichts zum Anzeigen übrig.

Diese Mimik habe ich oben in der FOR/F-Anweisung eingebaut.
Dazu muss das Pipe-Symbol "|" halt maskiert werden mit Caret "^" --->deshalb "^|".

Kommst du denn am CMD-Prompt zu den gleichen Ergebnissen wie ich?

P.S. Zur eigentlichen Frage:
nur die Ordner anzeigen soll die älter als 30 Tage sind
Nein, sondern nur die Ordner nach den ersten 30 vorhandenen Ordnern...
Strategie wäre ja jetzt: 30 Ordner will ich IMMER zur Sicherheit behalten (egal wie alt).

Grüße
Biber
Bitte warten ..
Mitglied: MrChaos
02.04.2008 um 15:00 Uhr
hey,
also ja ich habe das auch am cmd schritt für schritt durchprobiert.
okay das funktioniert auch.
die Sortierung
01.
dir /ad /o-n /b 
scheint am meisten sinn zu machen.(zumindest beim testen ;) )

kann ich das mit dem ^|more irgendwo nachlesen ?
warum muss das maskiert werden ?

fange gerade wieder an mich ein bisschen mit batch zu beschäftigen und will alles wissen in mich aufsaugen :D

Thomas
Bitte warten ..
Mitglied: Biber
02.04.2008 um 16:26 Uhr
Moin MrChaos,

warum muss das maskiert werden ?
Im Batch/am CMD-Prompt müssen wie in jeder anderen Skript-/Makro-/Programmiersprache alle Zeichen "maskiert" werden, die als Steuerzeichen besondere Bedeutung haben.

Einfaches Beispiel: (Befehl und Ausgabe am CMD-Prompt):
01.
>echo %windir% 
02.
C:\WINDOWS
Wenn Du aber als Ausgabe stehen haben willst:
Der Wert von %windir% ist C:\WINDOWS
...dann müsstest Du die ersten %-Zeichen maskiert eingeben.
01.
>echo Der Wert von ^%windir^% ist %windir%
Die Maskierung der Ein-/Ausgabe bei Echo und bei Pipe/Umleitungsaktionen ist der eine Fall,
der andere Fall ist die Übergabe/Delegierung eines (Teil-)Befehls an eine andere CMD-Instanz.
Und das passiert implizit bei jedem Befehl, der innerhalb einer FOR/F-Anweisung in einfachen Klammern steht.
Dann wird nämlich eine neue Instanz der CMD.exe eröffnet, die gefälligst diesen Befehl ausführen und das Ergebnis abliefern soll.
Im Beispiel oben wird also eine neue CMD.exe beauftragt:
"Hey, mach mir den ''dir /ad /o-d /b x:\sichverz\200????? |more +30'"
Der Befehl, der ausgeführt werden soll, ist also eigentlich ein Übergabe-Parameter und genau deshalb müssen evtl. vorhandene Steuerzeichen für die Dauer des Transports maskiert/sicher verpackt werden.
Und das Pipesymbol ("|") ist in diesem fall das zu maskierende Steuerzeichen, deshalb "^|".

Nachlesen kann man/frau es sicherlich auch irgendwo.... vielleicht postet eine/r der MitleserInnen noch einen Link.

Grüße
Biber
Bitte warten ..
Mitglied: MrChaos
07.04.2008 um 19:19 Uhr
Ich danke euch erstmal. das hat mir schon weitergeholfen ... bei weiteren Fragen komme ich gerne auf euch zurück

Gruß
Thomas
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateien (keine Ordner) löschen die älter sind als (4)

Frage von siziigilendirmez zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 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 ...