Automatisiertes Verschieben von Ordnern
Hallo zusammen,
ich nutze das nachfolgende Skript um das Alter (in Minuten) von Verzeichnissen zu überprüfen und im entsprechenden Fall eine Aktion durchzuführen:
@echo off & setlocal
set "Basis=C:\Test"
set /a MaxAge=2
set C=%temp%\ChkAge.vbs
echo WScript.Echo DateDiff("n",WScript.Arguments(0),Now)>%C%
for /d %%v in ("%Basis%\*.*") do call :ProcessFolder "%%v"
goto :eof
:ProcessFolder
for /f "tokens=1-2" %%i in ('dir "%Basis%" /ad /tc^|findstr /i /c:"%~n1"') do set "DT=%%i %%j"
for /f %%i in ('cscript //nologo %C% "%DT%"') do set /a "Age=%%i"
if %Age% gtr %MaxAge% (
echo Das Skript funktioniert fuer %1
)
goto :eof
Nun zum Problem:
In einem bestimmten, festen Verzeichniss, sollen alle enthaltenen Dateien (alle mit Endung .bak) anhand der Jahreszahl (CreateDate) in die entsprechenden Ordner verschoben werden.
Also eine Datei aus dem Jahr 2007 soll in den Ordner "2007" verschoben werden und wenn dieser nicht existiert, soll er angelegt werden.
Welchen Teil des o.g. Skripts muss ich hierfür anpassen?
Vielen lieben Dank schon im Voraus für eure Hilfe
ich nutze das nachfolgende Skript um das Alter (in Minuten) von Verzeichnissen zu überprüfen und im entsprechenden Fall eine Aktion durchzuführen:
@echo off & setlocal
set "Basis=C:\Test"
set /a MaxAge=2
set C=%temp%\ChkAge.vbs
echo WScript.Echo DateDiff("n",WScript.Arguments(0),Now)>%C%
for /d %%v in ("%Basis%\*.*") do call :ProcessFolder "%%v"
goto :eof
:ProcessFolder
for /f "tokens=1-2" %%i in ('dir "%Basis%" /ad /tc^|findstr /i /c:"%~n1"') do set "DT=%%i %%j"
for /f %%i in ('cscript //nologo %C% "%DT%"') do set /a "Age=%%i"
if %Age% gtr %MaxAge% (
echo Das Skript funktioniert fuer %1
)
goto :eof
Nun zum Problem:
In einem bestimmten, festen Verzeichniss, sollen alle enthaltenen Dateien (alle mit Endung .bak) anhand der Jahreszahl (CreateDate) in die entsprechenden Ordner verschoben werden.
Also eine Datei aus dem Jahr 2007 soll in den Ordner "2007" verschoben werden und wenn dieser nicht existiert, soll er angelegt werden.
Welchen Teil des o.g. Skripts muss ich hierfür anpassen?
Vielen lieben Dank schon im Voraus für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90684
Url: https://administrator.de/contentid/90684
Ausgedruckt am: 20.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo BinderAlex!
Die neue Problemstellung hat nur bedingt mit der vorhergehenden zu tun ...
Das Zielverzeichnis wird bei Bedarf neu erstellt, das Verschieben der Dateien durch das "echo" vor dem "move" derzeit nur simuliert - auch, da im Falle einer Namensgleichheit zwischen einer zu verschiebenden Datei und einer sich bereits im Zielverzeichnis befindenden letztere kommentarlos überschrieben würde ...
Grüße
bastla
Die neue Problemstellung hat nur bedingt mit der vorhergehenden zu tun ...
@echo off & setlocal
set "Verzeichnis=C:\Test"
set "Ext=.bak"
set "Ziel=C:\Archiv"
for /f "tokens=1,4" %%i in ('dir /a-d /tc "%Verzeichnis%"^|findstr /i /c:"%Ext%"') do call :ProcessFile "%%i" "%%j"
goto :eof
:ProcessFile
for /f "tokens=3 delims=." %%a in (%1) do set Jahr=%%a
if not exist "%Ziel%\%Jahr%\" md "%Ziel%\%Jahr%\"
echo move "%Verzeichnis%\%~2" "%Ziel%\%Jahr%\"
goto :eof
Grüße
bastla