anbei das Script:
@echo off
setlocal enabledelayedexpansion
set "sourceFolder=C:\Users"
set "destinationRoot=C:\Services\saved_User_Duplikate_Folders"
rem Aktuelles Datum im Format YYYY-MM-DD abrufen
for /f "tokens=1-3 delims=.-/ " %%a in ('wmic os get localdatetime ^| find "."') do set "currentDate=%%a"
set "today=%currentDate:~0,4%-%currentDate:~4,2%-%currentDate:~6,2%"
set "destinationFolder=%destinationRoot%\%today%"
rem Überprüfen, ob das Tagesverzeichnis existiert, und es bei Bedarf erstellen
if not exist "%destinationFolder%" (
mkdir "%destinationFolder%"
if !errorlevel! neq 0 (
echo Fehler: Das Verzeichnis %destinationFolder% konnte nicht erstellt werden.
exit /b 1
)
)
rem Überprüfen, ob die Log-Datei existiert, und sie bei Bedarf erstellen
if not exist "%destinationRoot%\log.txt" (
echo Log for Moving User Folders > "%destinationRoot%\log.txt"
if !errorlevel! neq 0 (
echo Fehler: Die Log-Datei %destinationRoot%\log.txt konnte nicht erstellt werden.
exit /b 1
)
)
rem Schleife über alle Ordner im Quellverzeichnis
for /d %%i in ("%sourceFolder%\local_*") do (
set "folderName=%%~nxi"
rem Verschieben des Ordners und Protokollierung des Ergebnisses
move "%%i" "%destinationFolder%" >nul 2>&1
if !errorlevel! == 0 (
echo %date% %time% - Moved folder: !folderName! to %destinationFolder% >> "%destinationRoot%\log.txt"
) else (
echo %date% %time% - Error moving folder: !folderName! >> "%destinationRoot%\log.txt"
)
)
rem Alte Ordner aufräumen, wobei die letzten 7 Ordner nach Änderungsdatum erhalten bleiben
set "tempFile=%TEMP%\folder_list.txt"
rem Ordner auflisten und Änderungsdaten speichern
dir /b /ad /o-d "%destinationRoot%" > "%tempFile%"
rem Zähle die Ordner und behalte nur die neuesten 7
set "count=0"
for /f "delims=" %%i in ('type "%tempFile%"') do (
set /a count+=1
if !count! gtr 7 (
rmdir /s /q "%destinationRoot%\%%i"
echo %date% %time% - Deleted old folder: %%i >> "%destinationRoot%\log.txt"
)
)
rem Aufräumen der temporären Datei
del "%tempFile%"
echo Ordner wurden verschoben und alte Ordner entfernt.