bugger
Goto Top

Batch Befehl ausführen wenn Datei älter als X Tage

Hallo zusammen,

ich finde immer nur Befehle die Dateien oder Ordner löschen nach x Tagen aber nicht um auf dem Ergebniss einen Befehl auszführen.

Ich hätte gerne ein möglichst kurzen Befehl der überprüft ob ein Ordner oder eine Datei (je nachdem was besser funktioniert) älter als z.B. 30 Tage ist und anschließend einen anderen Befehl ausführt. In etwa so:

If "Pfad" älter als 30 Tage dann wbadmin start backup bla bla

Ideen?

Danke im Voraus
Bugger

Content-Key: 274415

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

Ausgedruckt am: 19.03.2024 um 05:03 Uhr

Mitglied: 114757
114757 12.06.2015 aktualisiert um 13:56:53 Uhr
Goto Top
Dateien per Batch löschen, älter als X Tage
den gewünschten Befehl kannst du hinten dran einfach austauschen ...

Gruß jodel32
Mitglied: xbast1x
xbast1x 12.06.2015 um 13:56:31 Uhr
Goto Top
Ich verwende DELAGE. zum löschen nach Tagen, das script gibt es auch mit entsprechenden Parameter für "move"

http://www.horstmuc.de/wbat32d.htm
Mitglied: Snowman25
Snowman25 12.06.2015 um 14:04:04 Uhr
Goto Top
Zitat von @xbast1x:

Ich verwende DELAGE. zum löschen nach Tagen, das script gibt es auch mit entsprechenden Parameter für "move"

http://www.horstmuc.de/wbat32d.htm

Typischer fall von "Frage nicht gelesen".
THEMAVERFEHLUNG! SETZEN! 6!
Mitglied: 114757
114757 12.06.2015 aktualisiert um 14:08:10 Uhr
Goto Top

back-to-topFREITAGSALARM !

Mitglied: ITvortex
ITvortex 12.06.2015 um 14:14:43 Uhr
Goto Top
@Snowman25, ein bisschen gereizt?

Ein einfaches "lies dir die Frage nochmal druch" hätte es auch getan.

Damit hilfst du niemanden, sowas gehört sich nicht! Nur weil Freitag ist brauchst du dich hier nicht so auf zu spielen!


und @Bugger, wie jodel schon geschrieben hat, einfach den Befehl hinten anfügen dann klappt das auch.

Liebe Grüße
ITvortex
Mitglied: Bugger
Bugger 12.06.2015 aktualisiert um 14:17:43 Uhr
Goto Top
Danke für die Antwort,

Tausche ich "cmd /c del /q @path" komplett aus durch "wbadmin" oder muss das cmd /c stehen bleiben?
Mitglied: 114757
114757 12.06.2015 aktualisiert um 14:29:46 Uhr
Goto Top
Zitat von @Bugger:
Tausche ich "cmd /c del /q @path" komplett aus durch "wbadmin" oder muss das cmd /c stehen bleiben?
forfiles.exe /P "C:\Pfad" /S /M *.* /D -3 /C "cmd /c wbadmin ........."  
Mitglied: ITvortex
ITvortex 12.06.2015 um 14:29:04 Uhr
Goto Top
Zitat von @Bugger:

Danke für die Antwort,

Tausche ich "cmd /c del /q @path" komplett aus durch "wbadmin" oder muss das cmd /c stehen bleiben?

cmd /c muss stehen bleiben. Du musst ja die shell auch ausführen face-smile

"/c" bedeutet das der Befehl ausgeführt wird und danach beendet wird.

Liebe Grüße
ITvortex

PS: ich seh grade jodel hat das schon geschrieben...
Mitglied: Bugger
Bugger 12.06.2015 um 15:02:01 Uhr
Goto Top
Leider funktioniert es nicht, FEHLER: Argument/Option ungültig - 'start'.
Geben Sie "FORFILES /?" ein, um die Syntax anzuzeigen.

forfiles /P "Pfad1" /S /M *.* /D -30 /C "cmd /c wbadmin start backup -allcritical -vsscopy -quiet -backuptarget:Pfad2"  

Wahrscheinlich fehlt irgendwo "" aber überall wo ich es für logisch hielt, funktioniert es trotzdem nicht.
Mitglied: 114757
114757 12.06.2015 aktualisiert um 15:07:02 Uhr
Goto Top
Ich glaub du verstehst den Befehl wbadmin nicht, der sichert bei dir nicht die durch forfiles gewählten Dateien sondern ganze Partitionen, und das jedes mal für jede Datei, Kopfschütttel !!
Mitglied: Bugger
Bugger 12.06.2015 um 15:11:52 Uhr
Goto Top
Mir ist schon klar wie wbadmin funktioniert. wbadmin soll Teil eines größeren Backup Scripts werden aber nur laufen wenn die vorherige Sicherung 30 Tage zurück liegt. Daher die Überprüfung durch Forfiles. Also nix da Kopfschüttel, wenn überhaupt dann Kopf-Tisch weil ich wieder zu kompliziert gedacht habe aber das sagt ihr mir ja jetzt vielleicht, hoffentlich :P
Mitglied: 114757
114757 12.06.2015 aktualisiert um 15:26:37 Uhr
Goto Top
Du weißt aber schon das der Befehl für jede Datei ausgeführt wird die älter als 30 Tage ist. Wenn da also zwei davon sind wird auch zweimal ein Backup angestoßen (vermutlich nicht was du willst):

Hier geht es mit der Zeile einwandfrei ohne Fehler, da muss also bei dir irgendwo in einem Pfad ein Zeichen drin sein was forfiles nicht so gefällt.

Machs alternativ mit Powershell:
$oldfiles = gci "C:\Ordner\*.*" -recurse | ?{$_.LastWriteTime -lt (get-date).AddDays(-30)}  
if ($oldfiles){
  wbadmin ........
}
Mitglied: Bugger
Bugger 12.06.2015 um 15:40:38 Uhr
Goto Top
Powershell habe ich auch schon überlegt, würde aber lieber bei Batch bleiben. Vielleicht würde ja ein ganz anderer ansatz funktionieren:

Ein teil des scriptes sieht so aus, wird also immer Freitags ausgeführt. Kann man das so anpassen, dass z.B. immer am ersten oder zweiten Freitag des Monats der Befehl ausgeführt wird? Damit umgeht man auch die Datei Problematik von forfiles und die ~30 Tage wären auch um.

for /f "delims=" %%a in ('wmic path win32_localtime get dayofweek /format:list ') do for /f "delims=" %%d in ("%%a") do set %%d  

    if "%dayofweek%" == "5" (goto 1) else (goto 2)  
Mitglied: Bugger
Bugger 12.06.2015 um 18:34:49 Uhr
Goto Top
Ok ich habe jetzt erst entdeckt dass der Befehl den ich gepostet habe auch den Befehel get WeekInMonth beinhalted. Habe jetzt mein Script so geändert, dass er jeden 2ten Freitag einen weiteren Teil des Scriptes ausführt in dem dann der wbadmin Befehl steht. Also wieder zu kompliziert gedacht.^^ Trotzdem vielen Dank für eure Hilfe face-smile