Dateien des aktuellen Monats verschieben
Hallo,
ich möchte Dateien des aktuellen Monats in einem Archiv Ordner verschieben.
Es wird ein Ordner mit dem aktuellen Datum erstellt aber leider werden keine Dateien verschoben.
Kann mir jemand sagen wo der Fehler liegt?
Ich will die batch Datei auf einem Windows Server 2008 laufen lassen.
meine batch Datei:
set jahr=%date:~-4%
set monat=%date:~-7,2%
REM Monat ermitteln
if %monat%==01 set monat=01
if %monat%==02 set monat=02
if %monat%==03 set monat=03
if %monat%==04 set monat=04
if %monat%==05 set monat=05
if %monat%==06 set monat=06
if %monat%==07 set monat=07
if %monat%==08 set monat=08
if %monat%==09 set monat=09
if %monat%==10 set monat=10
if %monat%==11 set monat=11
if %monat%==12 set monat=12
rem Archivordner wird erzeugt, falls nicht vorhanden
rem Hier müssen die benötigten Pfade definiert werden
rem --------------------------------------------------------
rem Name des Archivordners
set ordner=%jahr%_%monat%
rem Pfad wo der Archivordner liegen soll
set pfad=C:\Temp\TEST\Archiv
rem Name des zu untersuchenden Ordners
set source=C:\Temp\TEST
if not exist %pfad%\%ordner% md %pfad%\%ordner%
rem Alle Dateien aus dem jeweiligen Monat werden nun verschoben
rem --------------------------------------------------
FOR /f "tokens=4" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO (
move %source%\"%%a" %pfad%\%ordner%
ich möchte Dateien des aktuellen Monats in einem Archiv Ordner verschieben.
Es wird ein Ordner mit dem aktuellen Datum erstellt aber leider werden keine Dateien verschoben.
Kann mir jemand sagen wo der Fehler liegt?
Ich will die batch Datei auf einem Windows Server 2008 laufen lassen.
meine batch Datei:
set jahr=%date:~-4%
set monat=%date:~-7,2%
REM Monat ermitteln
if %monat%==01 set monat=01
if %monat%==02 set monat=02
if %monat%==03 set monat=03
if %monat%==04 set monat=04
if %monat%==05 set monat=05
if %monat%==06 set monat=06
if %monat%==07 set monat=07
if %monat%==08 set monat=08
if %monat%==09 set monat=09
if %monat%==10 set monat=10
if %monat%==11 set monat=11
if %monat%==12 set monat=12
rem Archivordner wird erzeugt, falls nicht vorhanden
rem Hier müssen die benötigten Pfade definiert werden
rem --------------------------------------------------------
rem Name des Archivordners
set ordner=%jahr%_%monat%
rem Pfad wo der Archivordner liegen soll
set pfad=C:\Temp\TEST\Archiv
rem Name des zu untersuchenden Ordners
set source=C:\Temp\TEST
if not exist %pfad%\%ordner% md %pfad%\%ordner%
rem Alle Dateien aus dem jeweiligen Monat werden nun verschoben
rem --------------------------------------------------
FOR /f "tokens=4" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO (
move %source%\"%%a" %pfad%\%ordner%
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158542
Url: https://administrator.de/contentid/158542
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
moin,
ähh was bedeutet denn - wenn monat==01 set monat=01 usw? wirst du nach geschriebenen Zeilen bezahlt?
warum nicht sicherheitshalber
bzw:
btw²
Kennst du den Zwillingsbruder vom Karl klammer? Der fehlt bei dir... (und ist eh unnötig)
btw³ - wenn das script regelmäßig lauft - warum denn überhaupt die Schleife zum finden der aktuellen Monatsdateien?
Ist der Ordner am Ende des Monats leer - und das Script läuft regelmäßig - sind doch eh alle neuen Dateien aus dem aktuellen Ordner?
gruß
ähh was bedeutet denn - wenn monat==01 set monat=01 usw? wirst du nach geschriebenen Zeilen bezahlt?
set ordner=%jahr%_%monat%
Braucht es das auch?move %source%\"%%a" %pfad%\%ordner%
warum nicht sicherheitshalber
move "%source%\%%a" "%pfad%\%ordner%\"
bzw:
move "%source%\%%a" "%pfad%\%jahr%_%monat%\"
Ich finde "logische" Variablen besser und wenn ich eine Variable nur einmal brauche und die eh eine Kombination von mehreren Variablen ist - spare ich sowas gerne ein.btw²
FOR /f "tokens=4" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO (
move %source%\"%%a" %pfad%\%ordner%
Kennst du den Zwillingsbruder vom Karl klammer? Der fehlt bei dir... (und ist eh unnötig)
FOR /f "tokens=4" %%a IN ('dir %source% /A-D ^|find "%monat%.%jahr%"') DO move "%source%\%%a" "%pfad%\%jahr%_%monat%\"
btw³ - wenn das script regelmäßig lauft - warum denn überhaupt die Schleife zum finden der aktuellen Monatsdateien?
Ist der Ordner am Ende des Monats leer - und das Script läuft regelmäßig - sind doch eh alle neuen Dateien aus dem aktuellen Ordner?
gruß
... wobei es gelegentlich auch Dateien mit Leerzeichen im Namen geben könnte - dann besser:
[Edit] Auch von mir noch ein btw : Wenn einfach nur anhand des Änderungsdatums auf die entsprechenden Archivordner verteilt werden soll:
Das "
[/Edit]
Grüße
bastla
P.S.: Und dann noch der leider immer wieder erforderliche Hinweis auf die ""-Formatierung ...
FOR /f "tokens=3*" %%a IN ('dir "%source%" /A-D ^|find "%monat%.%jahr%"') DO move "%source%\%%b" "%pfad%\%jahr%_%monat%\"
pushd "%source%"
for /f %%i in ('dir /b /a-d') do for /f "tokens=2,3 delims=. " %%a in ("%%~ti") do echo move "%%i" "%pfad%\%%b_%%a\"
popd
pause
echo
" vor dem "move
" ist zum Testen (irgendwer muss das ja dann auch einmal machen ) gedacht und kann (genauso wie "pause
") danach entsorgt werden ...[/Edit]
Grüße
bastla
P.S.: Und dann noch der leider immer wieder erforderliche Hinweis auf die ""-Formatierung ...