harani
Goto Top

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

Content-ID: 126491

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

45877
45877 05.10.2009 um 16:49:36 Uhr
Goto Top
Zitat von @harani:
Gibts da ein Tool, welches ich
vielleicht nicht kenne?

Vielen Dank


ja , delage32

http://home.mnet-online.de/horst.muc/wbat32d.htm
partydevil
partydevil 07.10.2009 um 09:41:46 Uhr
Goto Top
Hallo

Versuch es doch mal mit robocopy.

isch ein nützliches Tool.

Der Befehl /MINLAD 30 würde dir hier weiterhelfen!
harani
harani 21.12.2009 um 15:46:11 Uhr
Goto Top
Hallo,

habe es mit delage32 gelöst

und so funktioniert es!!!

delage32 "D:\PE 4000 Data\Jobs\*.*" 3 /recurse /rd
Wombat
Wombat 13.12.2010 um 15:23:52 Uhr
Goto Top
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 face-smile), 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.