-=> WICHTIG !!! <=-
Das ist von der Google-KI!

Da ich Windows schon seit XP nicht mehr nutze, kenne ich mich nicht damit aus und kann es auch nicht testen.
-=> WICHTIG !!! <=-


----------
@echo off
setlocal enabledelayedexpansion

:: 1. ADMIN-RECHTE ANFORDERN (KISS-Methode für Windows-Batch)
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo Fordere Administratorrechte an...
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: Pfad des Skripts ermitteln (damit es weiß, wo die Festplatte ist)
set "TARGET_DRIVE=%~d0"
set "LN_PATH=%~dp0ln.exe"

:: 2. DATUM FÜR DEN ORDNERNAMEN ERMITTELN (Format: YYYY-MM-DD)
for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set "dt=%%i"
set "TODAY=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%"
set "BACKUP_DIR=%TARGET_DRIVE%\Windows_Backup_%TODAY%"

echo ===================================================
echo   WINDOWS 11 LIVE-BACKUP (VSS + Hardlinks)
echo ===================================================
echo Ziel-Verzeichnis: %BACKUP_DIR%

:: 3. HARDLINK-SNAPTSHOT VOM VORTAG ERSTELLEN (Falls vorhanden)
:: Sucht nach dem neuesten existierenden Backup-Ordner auf dem Laufwerk
set "LAST_BACKUP="
for /f "delims=" %%a in ('dir "%TARGET_DRIVE%\Windows_Backup_*" /b /ad /o-d 2^>nul') do (
    set "LAST_BACKUP=%TARGET_DRIVE%\%%a"
    goto :FoundLast
)
:FoundLast

if defined LAST_BACKUP (
    echo Erstelle Hardlink-Kopie von: %LAST_BACKUP%...
    "%LN_PATH%" --delorean "%LAST_BACKUP%" "%BACKUP_DIR%" >nul
) else (
    echo Kein vorheriges Backup gefunden. Erstelle neues Vollbackup...
    mkdir "%BACKUP_DIR%"
)

:: 4. SCHATTENKOPIE (VSS) ERSTELLEN UND EINBINDEN
echo Erstelle Schattenkopie von Laufwerk C:...
for /f "tokens=2 delims={}" %%i in ('powershell -Command "(Start-WmiMethod -ClassName Win32_ShadowCopy -Name Create -ArgumentList @{Volume='C:\'}).ShadowID"') do set "SHADOW_ID={%%i}"

:: Die Schattenkopie als temporären symbolischen Link (X:\VSS_C) verfügbar machen
set "VSS_PATH=%TARGET_DRIVE%\VSS_C"
powershell -Command "New-Item -ItemType SymbolicLink -Path '%VSS_PATH%' -Value (Get-WmiObject Win32_ShadowCopy | Where-Object {$_.ID -eq '%SHADOW_ID%'}).DeviceObject" >nul

:: 5. ECHTES DIRECT-FILE COPY MIT ROBOCOPY (Aus der Schattenkopie)
echo.
echo Kopiere geänderte Dateien (Schattenkopie -> Backup)...
echo.
robocopy "%VSS_PATH%\" "%BACKUP_DIR%\" /MIR /XJ /COPYALL /SL /R:0 /W:0 /MT:8 /XD "System Volume Information" "$RECYCLE.BIN" /NFL /NDL

:: 6. AUFRÄUMEN
echo.
echo Bereinige temporäre Schattenkopie...
powershell -Command "Remove-Item '%VSS_PATH%' -Force" >nul
vssadmin delete shadows /shadow=%SHADOW_ID% /quiet >nul

echo ===================================================
echo   BACKUP ERFOLGREICH BEENDET!
echo ===================================================
echo Du kannst das Laufwerk jetzt sicher entfernen.
pause
----------