Per Batch Ordner in ein anderes Verzeichnis kopieren die älter sind als aktuelles Datum
Hallo,
ich möchte Per Batch Ordner die vom Erstelldatum her älter sind als 30Tage (gesehen vom aktuellen Datum) in ein anderes Verzeichnis verschieben.(Share)
Die Ordner werden auf einem Rechner ohne bestimmte Bezeichnung lokal abgespeichert.
Könntet ihr mir da weiterhelfen? Gibts da ein Tool, welches ich vielleicht nicht kenne?
Vielen Dank
Zu Info:
Windows XP PRO ist das Betriebssystem
ich möchte Per Batch Ordner die vom Erstelldatum her älter sind als 30Tage (gesehen vom aktuellen Datum) in ein anderes Verzeichnis verschieben.(Share)
Die Ordner werden auf einem Rechner ohne bestimmte Bezeichnung lokal abgespeichert.
Könntet ihr mir da weiterhelfen? Gibts da ein Tool, welches ich vielleicht nicht kenne?
Vielen Dank
Zu Info:
Windows XP PRO ist das Betriebssystem
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126491
Url: https://administrator.de/forum/per-batch-ordner-in-ein-anderes-verzeichnis-kopieren-die-aelter-sind-als-aktuelles-datum-126491.html
Ausgedruckt am: 23.12.2024 um 19:12 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
ich kenne mich noch nicht so gut aus, da dies mein erster Beitrag in einem Forum überhaupt ist, aber nachdem ich hier so viel hilfreiche Tipps fand, wollte ich auch mal etwas beitragen.
Dieser Beitrag ist zwar schon etwas älter, für mich war er aber noch nicht gelöst, da nicht gezeigt wurde, wie man mit einem Batch Ordner, die älter als X Tage sind verschiebt.
Mit Hilfe einiger recherchen (die meisten hilfreichen Beiträge im Web zu dem Thema scheinen von Biber zu sein ), habe ich mein erstes komplexeres Batch geschrieben, also zerreist mich nicht in der Luft, wenn man hier und da etwas besser machen könnte.
Leider habe ich festgestellt, dass das Datum, das mit ~t erzeugt wird wohl das letzte Änderungsdatum, nicht das Erstellungsdatum des Ordners ist.
Das folgende Batch verschiebt alle Ordner eines Server-Verzeichnisses die mit 6 anfangen (6*) nach 120 Tagen komplett mit Unterordner in einen anderen Ordner. Dazu wird Robocopy verwendet, das frei erhältlich ist. Wer das nicht mag kann ja einen Xcopy oder Move Befehl stattdessen verwenden. Robocopy hat eben noch die Möglichkeit ausführliche Logs und Errorlevel zurückzugeben. Die ganzen Vorgänge werden dann noch in eine übersichtliche und eine ausfühlichere Log-Datei geschrieben, so braucht man jeden Tag nur kurz in die LOGs schauen, um zu sehen ob die Verschiebungen anständig liefen.
Hier das Batch:
hoffe für den einen oder anderen war das hilfreich.
ich kenne mich noch nicht so gut aus, da dies mein erster Beitrag in einem Forum überhaupt ist, aber nachdem ich hier so viel hilfreiche Tipps fand, wollte ich auch mal etwas beitragen.
Dieser Beitrag ist zwar schon etwas älter, für mich war er aber noch nicht gelöst, da nicht gezeigt wurde, wie man mit einem Batch Ordner, die älter als X Tage sind verschiebt.
Mit Hilfe einiger recherchen (die meisten hilfreichen Beiträge im Web zu dem Thema scheinen von Biber zu sein ), habe ich mein erstes komplexeres Batch geschrieben, also zerreist mich nicht in der Luft, wenn man hier und da etwas besser machen könnte.
Leider habe ich festgestellt, dass das Datum, das mit ~t erzeugt wird wohl das letzte Änderungsdatum, nicht das Erstellungsdatum des Ordners ist.
Das folgende Batch verschiebt alle Ordner eines Server-Verzeichnisses die mit 6 anfangen (6*) nach 120 Tagen komplett mit Unterordner in einen anderen Ordner. Dazu wird Robocopy verwendet, das frei erhältlich ist. Wer das nicht mag kann ja einen Xcopy oder Move Befehl stattdessen verwenden. Robocopy hat eben noch die Möglichkeit ausführliche Logs und Errorlevel zurückzugeben. Die ganzen Vorgänge werden dann noch in eine übersichtliche und eine ausfühlichere Log-Datei geschrieben, so braucht man jeden Tag nur kurz in die LOGs schauen, um zu sehen ob die Verschiebungen anständig liefen.
Hier das Batch:
@echo off
REM echo %date% %time% Pruefung begonnen! >> ArchivFehlerReport.txt
set /a TagHeute=1%date:~0,2%-100
set /a MonatHeute=1%date:~3,2%-100
set JahrHeute=%date:~6,4%
set OrdnerGefunden=nein
for /d %%i in (6*) do (set DatumOrdner=%%~ti & set OrdnerName=%%i& call:PRÜFUNG)
echo Pruefung und Verschiebungen beendet!
if %OrdnerGefunden%==nein echo %date% %time% Pruefung beendet, keine Ordner zu verschieben! >> ArchivFehlerReport.txt
if %OrdnerGefunden%==ja echo %date% %time% Pruefung und Verschiebungen beendet! >> ArchivFehlerReport.txt
goto:eof
:PRÜFUNG
REM echo der Ordner %OrdnerName% wurde erstellt am %DatumOrdner%
REM bei Tag und Monat muss 1 davorgesetzt und 100 abgezogen werden da z.B. 08 nicht als Zahl interpretiert werden.
set /a TagOrdner=1%DatumOrdner:~0,2%-100
set /a MonatOrdner=1%DatumOrdner:~3,2%-100
set JahrOrdner=%DatumOrdner:~6,4%
REM echo berechne wieviele Tag zwischen Erstellungsdatum und heutigem Datum liegen
set /a DiffJahr=(%JahrHeute%-%JahrOrdner%)*365 & REM echo Jahrdifferenz %DiffJahr% berechne nun DiffMonat
set /a DiffMonat=(%MonatHeute%-%MonatOrdner%)*30 & REM echo Monatdifferenz %DiffMonat% berechne nun DiffTag
set /a DiffTag=%TagHeute%-%TagOrdner% & REM echo Tagdifferenz %DiffTag% berechne nun DiffGesamt
set /a GesamtDiff=%DiffJahr%+%DiffMonat%+%DiffTag% & REM echo GesamtDiff %GesamtDiff%
REM echo schaue ob die Differenz 4 Monate (30 Tage je Monat) erreicht.
if %GesamtDiff% GEQ 120 (set istälter=ja) ELSE (set istälter=nein)
if %istälter%==ja %OrdnerGefunden%=ja
if %istälter%==ja echo "%OrdnerName%" ist %GesamtDiff% Tage alt, muss verschoben werden? %istälter%
if %istälter%==ja echo %date% %time% - "%OrdnerName%" ist %GesamtDiff% Tage alt, wird verschoben...
if %istälter%==ja echo %date% %time% - "%OrdnerName%" ist %GesamtDiff% Tage alt, wird verschoben... >> ArchivFehlerReport.txt
if %istälter%==ja start "verschiebe %OrdnerName%..." /wait robocopy "d:\jobs\%OrdnerName%" "d:\jobs\_abgeschlossen\%OrdnerName%" *.* /NFL /E /MOVE /ZB /COPYALL /R:3 /W:6 /TEE /LOG+:archivReport.txt
if %istälter%==nein goto fehler
if %errorlevel% == 16 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: ***FATAL ERROR** >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 15 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, mismatches, extras copied, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 14 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, mismatches, extras copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 13 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, mismatches, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 12 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, mismatches* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 11 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, extras copied, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 10 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, extras copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 9 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *Failed Copies, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 8 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: **FAILED COPIES** >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 7 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *MISMATCHES, extras copied, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 6 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *MISMATCHES, extras copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 5 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *MISMATCHES, Files copied* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 4 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: *MISMATCHES* >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 3 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: Copy successful und EXTRAS COPIED >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 2 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: EXTRA FILES COPIED >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 1 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: Copy successful >> ArchivFehlerReport.txt & goto fehler
if %errorlevel% == 0 echo %date% %time% %OrdnerName% - Errorlevel %errorlevel%: -- Nothing to do -- >> ArchivFehlerReport.txt & goto fehler
:fehler
goto:eof
hoffe für den einen oder anderen war das hilfreich.