@echo off
chcp 1251 >nul
setlocal EnableDelayedExpansion

echo ============================================
echo  Завершение сеансов и очистка кэша 1С (RDP)
echo ============================================
echo.

rem --- Проверка прав администратора ---
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo ОШИБКА: Запустите скрипт от имени Администратора!
    pause
    exit /b 1
)

rem ============================================
rem  ШАГ 1: Завершение RDP-сеансов
rem ============================================
echo [1/3] Завершение RDP-сеансов...
echo.

for /f "skip=2 tokens=1-3" %%a in ('query session') do (
    call :ReturnIDCurrentUser "%%c"
    if !errorlevel!==0 (
        set "user=%%b"
        set "ID=%%c"
    ) else (
        set "user=%%a"
        set "ID=%%b"
    )

    if /i "!user!" neq "Администратор" (
        if /i "!user!" neq "rdp-tcp" (
            if /i "!user!" neq "services" (
                if /i "!user!" neq "console" (
                    echo      Завершение сеанса: !user! (ID=!ID!)
                    logoff !ID!
                )
            )
        )
    )
)

echo.
echo      Ожидаем завершения сеансов...
timeout /t 10 /nobreak >nul

rem ============================================
rem  ШАГ 2: Очистка кэша 1С для всех профилей
rem ============================================
echo [2/3] Очистка кэша 1С во всех профилях пользователей...
echo.

set "deleted=0"

for /d %%u in ("C:\Users\*") do (
    set "username=%%~nu"

    if /i "!username!" neq "Public" (
        if /i "!username!" neq "Default" (
            if /i "!username!" neq "Default User" (
                if /i "!username!" neq "All Users" (

                    for /d %%s in ("%%u\AppData\Roaming\1C\1Cv8\*-*-*-*-*") do (
                        echo      [!username!] Удаление: %%s
                        rmdir /s /q "%%s" 2>nul
                        set /a deleted+=1
                    )

                    for /d %%s in ("%%u\AppData\Local\1C\1Cv8\*-*-*-*-*") do (
                        echo      [!username!] Удаление: %%s
                        rmdir /s /q "%%s" 2>nul
                        set /a deleted+=1
                    )

                )
            )
        )
    )
)

echo.
echo      Удалено папок: !deleted!

rem ============================================
rem  ШАГ 3: Проверка процессов 1С
rem ============================================
echo.
echo [3/3] Проверка оставшихся процессов 1С...

tasklist /fi "imagename eq 1cv8.exe" 2>nul | find /i "1cv8.exe" >nul
if not errorlevel 1 (
    echo      ПРЕДУПРЕЖДЕНИЕ: 1С ещё запущена у кого-то из пользователей.
    echo      Кэш этих пользователей мог не очиститься полностью.
    tasklist /fi "imagename eq 1cv8.exe"
) else (
    echo      Процессы 1С не обнаружены. Чисто.
)

echo.
echo ============================================
echo  Готово! Время: %date% %time%
echo ============================================
pause
exit /b

:ReturnIDCurrentUser
echo.%~1|>nul findstr /R "[^0-9]" && exit /b 1
exit /b 0