ich möchte jeden ersten Montag im Monat aus einem bestimmten Ordern alle Daten vom Vormonat in ein anderes Verzeichnis verschieben und zippen. Hierzu verwende ich eine batch und Robocopy bzw 7zip.
Ich muss dazu sagen, dass das schreiben von Batches jetzt nicht zu meiner täglichen Arbeit gehört und ich mir dies hier in viel kleinarbeit zusammen gegebastelt habe.

Hier meine Batch
@echo on color f1 title Pida Trace Bereinigung set month=%date:~3,2% set year=%date:~6% IF [08]==[%month%] SET /A month=8 IF [09]==[%month%] SET /A month=9 set /a monthx=%month%-1 if %monthx%==1 set monthx=Januar if %monthx%==2 set monthx=Februar if %monthx%==3 set monthx=Maerz if %monthx%==4 set monthx=April if %monthx%==5 set monthx=Mai if %monthx%==6 set monthx=Juni if %monthx%==7 set monthx=Juli if %monthx%==8 set monthx=August if %monthx%==9 set monthx=September if %monthx%==10 set monthx=Oktober if %monthx%==11 set monthx=November if %monthx%==12 set monthx=Dezember mkdir C:\pida\%monthx%_%Year%\ robocopy C:\pida\daten1\ C:\pida\%monthx%_%Year%\ /move /MINAGE:%Year%%month%01 /R:3 /W:5 /LOG+:C:\pida\Log\LOG-%month%_%Year%.txt C:\Programme\7-Zip\7z.exe a -r C:\pida\Zip\%Monthx%-%year%.zip C:\pida\%monthx%_%Year%\* >C:\pida\Log\7-zip-log.txt pause
Hier das Ergebnis der Batch
C:\Pida\sandkasten>color f1 C:\Pida\sandkasten>title Pida Trace Bereinigung C:\Pida\sandkasten>set month=08 C:\Pida\sandkasten>set year=2019 C:\Pida\sandkasten>IF [08] == [08] SET /A month=8 C:\Pida\sandkasten>IF [09] == [8] SET /A month=9 C:\Pida\sandkasten>set /a monthx=8-1 C:\Pida\sandkasten>if 7 == 1 set monthx=Januar C:\Pida\sandkasten>if 7 == 2 set monthx=Februar C:\Pida\sandkasten>if 7 == 3 set monthx=Maerz C:\Pida\sandkasten>if 7 == 4 set monthx=April C:\Pida\sandkasten>if 7 == 5 set monthx=Mai C:\Pida\sandkasten>if 7 == 6 set monthx=Juni C:\Pida\sandkasten>if 7 == 7 set monthx=Juli C:\Pida\sandkasten>if Juli == 8 set monthx=August C:\Pida\sandkasten>if Juli == 9 set monthx=September C:\Pida\sandkasten>if Juli == 10 set monthx=Oktober C:\Pida\sandkasten>if Juli == 11 set monthx=November C:\Pida\sandkasten>if Juli == 12 set monthx=Dezember C:\Pida\sandkasten>mkdir C:\pida\Juli_2019\ Ein Unterverzeichnis oder eine Datei mit dem Namen "C:\pida\Juli_2019\" existiert bereits. C:\Pida\sandkasten>robocopy C:\pida\daten1\ C:\pida\Juli_2019\ /move /MINAGE:2019801 /R:3 /W:5 /LOG+:C:\pida\Log\LOG-8_2019.txt ------------------------------------------------------------------------------- ROBOCOPY :: Robustes Dateikopieren für Windows ------------------------------------------------------------------------------- Gestartet: Donnerstag, 29. August 2019 18:08:52 Quelle - C:\pida\daten1\ Ziel - C:\pida\Juli_2019\ Dateien : Optionen: /DCOPY:DA /COPY:DAT /MOVE /R:1000000 /W:30 ------------------------------------------------------------------------------ FEHLER: Ungültiger Parameter #4 : "/MINAGE:2019801" Einfache Syntax :: ROBOCOPY Quelle Ziel /MIR Quelle :: Quellverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad) Ziel :: Zielverzeichnis (Laufwerk:\Pfad oder \\Server\Freigabe\Pfad) /MIR :: Spiegelt eine vollständige Verzeichnisstruktur. Weitere Informationen erhalten Sie über den Befehl "ROBOCOPY /?" **** Der Befehl "/MIR" kann Dateien sowohl kopieren als auch LÖSCHEN. C:\Pida\sandkasten>C:\Programme\7-Zip\7z.exe a -r C:\pida\Zip\Juli-2019.zip C:\pida\Juli_2019\* 1>C:\pida\Log\7-zip-log.txt C:\Pida\sandkasten>rem del /f /s /q C:\pida\Juli_2019 C:\Pida\sandkasten>pause
Wie mir robocopy ja sagt kommt er mit dem Datumsformat als Parameter für MINAGE nicht klar. Hier fehlt offenbar die "0" vor der "8", denn wenn ich
robocopy C:\pida\daten1\ C:\pida\%monthx%_%Year%\ /move /MINAGE:20190801 /R:3 /W:5 /LOG+:C:\pida\Log\LOG-%month%_%Year%.txt
von Hand ausführe funktioniert es.
Kann mir hie rjemand helfen? Ich finde einfach nicht den Ansatz aus der 8 ein 08 zu machen, bzw robocopy dazu zu bringen yyyymdd anstelle von yyyymmdd als Parameter zu aktzeptieren.
Danke
Gruss Lexxx