@echo off
chcp 65001 > nul
openfiles > NUL 2>&1
:: Admin rights check
if NOT %ERRORLEVEL% EQU 0 (
	Color 4
	echo Ошибка! Запустите с правами Админиситратора!
	pause
	exit
)
Color 2
echo Запускаем скрипт...

:: Определяем свободное место на диске до начала скрипта
setlocal enableextensions enabledelayedexpansion
for /f "skip=2 tokens=2 delims=:" %%i in ('fsutil volume diskfree C:') do set sFreeSize=%%i
if defined sFreeSize (
	set FreeSizeBefore=%sFreeSize%
	echo Свободно на диске С: %FreeSizeBefore% 
)
endlocal

:: 1. Удаляем временные файлы ( temp )
echo 1. Удаляем временные файлы
cd /d %temp% && rmdir /s /q %temp% > NUL 2>&1

:: 2. Очистка кэша обновлений: Путь:Диск С/windows/SoftwareDistribution/Download
echo 2. Очистка кэша обновлений
cd /d C:\Windows\SoftwareDistribution\Download && rmdir /s /q C:\Windows\SoftwareDistribution\Download > NUL 2>&1

:: 3. Очистка хранилища WinSxS:
echo 3. Очистка хранилища WinSxS:
dism /online /Cleanup-Image /StartComponentCleanup

:: 4. Отключение зарезервированного хранилища в Windows 10 и 11
echo 4. Отключение зарезервированного хранилища в Windows 10 и 11
DISM /Online /Set-ReservedStorageState /State:Disabled

:: 5. Отключение файла гибернации
echo 5. Отключение файла гибернации
powercfg -h off

:: 6. Сжатие операционной системы для Windows 10 и 11
echo 6. Сжатие операционной системы для Windows 10 и 11
compact /compactos:always


:: Определяем свободное место на диске после выполнения скрипта
setlocal enableextensions enabledelayedexpansion
for /f "skip=2 tokens=2 delims=:" %%i in ('fsutil volume diskfree C:') do set sFreeSize=%%i
if defined sFreeSize (
::	echo Свободно на диске С: до %FreeSizeBefore% 
	echo Свободно на диске С: после %FreeSize% 
)
endlocal

pause