@echo off
setlocal enabledelayedexpansion
title USB Auto-Backup (Windows 7) - Runs Until Shutdown
mode con: cols=60 lines=15
color 0A

:: ====================== SETTINGS ======================
:: Save backup folder to DESKTOP (no changes needed)
set "DESKTOP=%USERPROFILE%\Desktop"
:: Check for new USB every 2 seconds (adjust if needed)
set "CHECK_INTERVAL=2"
:: ======================================================

:: Initialize list of current drives (to detect NEW USBs)
for /f %%D in ('wmic logicaldisk where drivetype^=2 get deviceid ^| find ":"') do (
    set "EXISTING_DRIVES=!EXISTING_DRIVES!%%D,"
)

echo.
echo  ==============================================
echo          USB AUTO BACKUP (WINDOWS 7)
echo  ==============================================
echo  Backs up NEW USB drives to your DESKTOP
echo  Close this window to stop the script
echo  Runs automatically until PC shutdown
echo  ==============================================
echo.
echo [ACTIVE] Monitoring for new USB drives...
echo.

:: ====================== MAIN LOOP (RUNS FOREVER) ======================
:MONITOR_LOOP
:: Get CURRENT USB drives (DriveType=2 = Removable Disk)
set "CURRENT_DRIVES="
for /f %%D in ('wmic logicaldisk where drivetype^=2 get deviceid ^| find ":"') do (
    set "CURRENT_DRIVES=!CURRENT_DRIVES!%%D,"
)

:: Check for NEWLY inserted USB drives
for %%D in (%CURRENT_DRIVES%) do (
    echo !EXISTING_DRIVES! | findstr /i "%%D" >nul
    if errorlevel 1 (
        :: NEW USB DETECTED - Start backup
        echo ==================================================
        echo [NEW USB DETECTED] Drive: %%D
        echo ==================================================
        
        :: Create UNIQUE backup folder (timestamp: YYYY-MM-DD_HH-MM-SS)
        for /f "tokens=1-3 delims=/: " %%a in ("%date%") do set "DATE=%%a-%%b-%%c"
        for /f "tokens=1-3 delims=:. " %%a in ("%time%") do (
            set "HOUR=%%a"
            set "MIN=%%b"
            set "SEC=%%c"
        )
        set "TIMESTAMP=!DATE!_!HOUR!-!MIN!-!SEC!"
        set "BACKUP_FOLDER=!DESKTOP!\USB_Backup_!TIMESTAMP!"
        mkdir "!BACKUP_FOLDER!"
        echo [CREATE] Backup folder: !BACKUP_FOLDER!
        
        :: Copy ALL USB content (files + folders) silently
        echo [COPYING] Please wait... Do NOT remove USB!
        xcopy "%%D\*" "!BACKUP_FOLDER!\" /E /H /C /R /Y /Q >nul
        
        :: Backup complete
        echo [SUCCESS] USB backup finished!
        echo ==================================================
        echo.
        
        :: Add new drive to existing list
        set "EXISTING_DRIVES=!EXISTING_DRIVES!%%D,"
    )
)

:: Wait and repeat loop
timeout /t %CHECK_INTERVAL% /nobreak >nul
goto MONITOR_LOOP