@echo off
chcp 65001 >nul
setlocal EnableExtensions
title KAKAI OPTIC v2.4

:: Mode plein écran et agrandissement de la police de la console CMD (Consolas 20pt)
powershell -NoProfile -Command "$h=Get-Host;$w=$h.UI.RawUI;$s=$w.BufferSize;$s.Width=130;$s.Height=9999;$w.BufferSize=$s;$s=$w.WindowSize;$s.Width=130;$s.Height=42;$w.WindowSize=$s;" >nul 2>&1
powershell -NoProfile -Command "$code = '[DllImport(\"kernel32.dll\", SetLastError = true)] public static extern bool SetCurrentConsoleFontEx(IntPtr hConsoleOutput, bool bMaximumWindow, ref CONSOLE_FONT_INFOEX lpConsoleCurrentFontEx); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct CONSOLE_FONT_INFOEX { public uint cbSize; public uint nFont; public COORD dwFontSize; public int FontFamily; public int FontPitchAndFamily; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string FaceName; } [StructLayout(LayoutKind.Sequential)] public struct COORD { public short X; public short Y; }'; Add-Type -MemberDefinition $code -Name 'Win32Font' -Namespace 'Win32'; $info = New-Object Win32.CONSOLE_FONT_INFOEX; $info.cbSize = [System.Runtime.InteropServices.Marshal]::SizeOf($info); $info.dwFontSize.Y = 22; $info.FaceName = 'Consolas'; [Win32.Win32Font]::SetCurrentConsoleFontEx((Get-Process -Id $PID).MainWindowHandle, $false, [ref]$info)" >nul 2>&1

net session >nul 2>&1
if %errorlevel% NEQ 0 (
    echo Demande des droits d'administrateur en cours...
    powershell -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
    exit /b
)

set "KAKAI_DIR=%ProgramData%\WindowsOptimizer"
set "BACKUP_DIR=%KAKAI_DIR%\Backup"
set "DISABLED_DIR=%KAKAI_DIR%\DisabledStartup"
set "LOG_FILE=%KAKAI_DIR%\session_history.txt"

if not exist "%KAKAI_DIR%" md "%KAKAI_DIR%" >nul 2>&1
if not exist "%BACKUP_DIR%" md "%BACKUP_DIR%" >nul 2>&1
if not exist "%DISABLED_DIR%" md "%DISABLED_DIR%" >nul 2>&1

if not exist "%LOG_FILE%" (
    echo [%DATE% %TIME%] Session démarrée > "%LOG_FILE%"
)

for /f "tokens=1,2 delims=#" %%a in ('"prompt $H#$E# & echo on & for %%b in (1) do rem"') do set "ESC=%%b"

:: Couleurs par défaut (Violet Cyber)
set "C_ROSE=%ESC%[95m"
set "C_BLEU=%ESC%[35m"
set "C_CYAN=%ESC%[36m"
set "C_RESET=%ESC%[0m"

:MENU
cls

echo.
echo  ===================================================================================================================
echo  %C_ROSE%                  ██╗  ██╗█████╗ ██╗  ██╗█████╗ ██╗   %C_BLEU%  ██████╗ ██████╗ ████████╗██╗ ██████╗%C_RESET%
echo  %C_ROSE%                  ██║ ██╔╝██╔══██╗██║ ██╔╝██╔══██╗██║   %C_BLEU% ██╔═══██╗██╔══██╗╚══██╔══╝██║██╔════╝%C_RESET%
echo  %C_ROSE%                  █████═╝ ███████║█████═╝ ███████║██║   %C_BLEU% ██║   ██║██████╔╝   ██║   ██║██║     %C_RESET%
echo  %C_ROSE%                  ██╔═██╗ ██╔══██║██╔═██╗ ██╔══██║██║   %C_BLEU% ██║   ██║██╔═══╝    ██║   ██║██║     %C_RESET%
echo  %C_ROSE%                  ██║  ██╗██║  ██║██║  ██╗██║  ██║██║   %C_BLEU% ╚██████╔╝██║        ██║   ██║╚██████╗%C_RESET%
echo  %C_ROSE%                  ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝   %C_BLEU%  ╚═════╝ ╚═╝        ╚═╝   ╚═╝ ╚═════╝%C_RESET%
echo  ===================================================================================================================
echo                   [ Session ] PC : %COMPUTERNAME%  ^|  User : %USERNAME%  ^|  Arch : %PROCESSOR_ARCHITECTURE%
echo  -------------------------------------------------------------------------------------------------------------------
echo.
echo     %C_CYAN%[ Restauration et Securite ]%C_RESET%                             %C_CYAN%[ Optimisation et Performances ]%C_RESET%
echo     ----------------------------------                          ----------------------------------
echo      [01] Créer point de restauration                            [06] Profil Ultra Qualité
echo      [02] Assistant Windows (rstrui)                             [07] Profil Qualité
echo      [03] Restaurer les réglages                                 [08] Profil Optimiser
echo      [04] Sauvegarder les réglages                               [09] Profil Ultra Optimiser
echo      [05] Réparation SFC / DISM                                  [10] Services et Anti-Télémétrie
echo.
echo     %C_CYAN%[ Outils et Nettoyage ]%C_RESET%                                  %C_CYAN%[ Configuration ^& Outils Extra ]%C_RESET%
echo     ----------------------------------                          ----------------------------------
echo      [11] Boost Gaming                                           [16] Gestionnaire de Démarrage
echo      [12] Optimisation Réseau ^& Ethernet                         [17] Gestion Énergie / CPU
echo      [13] Nettoyage Temps ^& Corbeille                            [18] Libération Mémoire RAM
echo      [14] Purge Caches Apps/Browsers                             [19] Thèmes de Couleurs Console
echo      [15] Infos Système Détaillées                               [20] Test Latence / Ping Réseau
echo                                                                  [21] Optimiser Pagefile (RAM Virtuelle)
echo                                                                  [22] Exporter Rapport Système (Desktop)
echo  ===================================================================================================================
echo                                              [00] Quitter le programme
echo  ===================================================================================================================
echo.
set "CHOIX="
set /p "CHOIX=  kakai-optic > "

if "%CHOIX%"=="01" goto RESTORE_POINT
if "%CHOIX%"=="1" goto RESTORE_POINT
if "%CHOIX%"=="02" goto SYSTEM_RESTORE
if "%CHOIX%"=="2" goto SYSTEM_RESTORE
if "%CHOIX%"=="03" goto KAKAI_RESTORE
if "%CHOIX%"=="3" goto KAKAI_RESTORE
if "%CHOIX%"=="04" goto BACKUP
if "%CHOIX%"=="4" goto BACKUP
if "%CHOIX%"=="05" goto REPAIR
if "%CHOIX%"=="5" goto REPAIR
if "%CHOIX%"=="06" goto ULTRA_QUALITE
if "%CHOIX%"=="6" goto ULTRA_QUALITE
if "%CHOIX%"=="07" goto QUALITE
if "%CHOIX%"=="7" goto QUALITE
if "%CHOIX%"=="08" goto OPTIMISER
if "%CHOIX%"=="8" goto OPTIMISER
if "%CHOIX%"=="09" goto ULTRA_OPTIMISER
if "%CHOIX%"=="9" goto ULTRA_OPTIMISER
if "%CHOIX%"=="10" goto SERVICES_TELEMETRY
if "%CHOIX%"=="11" goto GAMING
if "%CHOIX%"=="12" goto RESEAU
if "%CHOIX%"=="13" goto CLEAN
if "%CHOIX%"=="14" goto CLEAN_APPS
if "%CHOIX%"=="15" goto INFO
if "%CHOIX%"=="16" goto STARTUP
if "%CHOIX%"=="17" goto POWER
if "%CHOIX%"=="18" goto MEMORY
if "%CHOIX%"=="19" goto CHANGE_COLOR
if "%CHOIX%"=="20" goto PING_TEST
if "%CHOIX%"=="21" goto PAGEFILE
if "%CHOIX%"=="22" goto EXPORT_REPORT
if "%CHOIX%"=="00" goto QUIT
if "%CHOIX%"=="0" goto QUIT

echo.
echo  [ERREUR] Choix invalide.
timeout /t 2 >nul
goto MENU

:PAGE
cls
echo.
echo  ===================================================================================================================
echo     KAKAI OPTIC v9.4 - %~1
echo  ===================================================================================================================
echo.
exit /b

:ASK
echo.
echo  Attention : cette opération va modifier des paramètres système.
set "REP="
set /p "REP=Continuer ? [o/n] : "
if /I "%REP%"=="o" exit /b
goto MENU

:CONFIRM_RESTORE_POINT
echo.
set "DO_RESTORE="
set /p "DO_RESTORE=Créer un point de restauration avant de continuer ? [o/n] : "
if /I "%DO_RESTORE%"=="o" (
    echo.
    echo  Création du point de restauration...
    powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "try { Enable-ComputerRestore -Drive $env:SystemDrive -ErrorAction SilentlyContinue; Checkpoint-Computer -Description 'KAKAI OPTIC' -RestorePointType MODIFY_SETTINGS -ErrorAction Stop } catch { }"
    echo [%DATE% %TIME%] Point de restauration automatique créé. >> "%LOG_FILE%"
)
exit /b

:RESTORE_POINT
call :PAGE "Point de Restauration"
echo  Action : Création d'un point de sauvegarde du registre et de l'état système Windows.
echo  Bénéfice : Permet de revenir en arrière via l'assistant Windows si un problème survient.
call :ASK
echo.
echo  Création du point de restauration...
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "try { Enable-ComputerRestore -Drive $env:SystemDrive -ErrorAction SilentlyContinue; Checkpoint-Computer -Description 'KAKAI OPTIC' -RestorePointType MODIFY_SETTINGS -ErrorAction Stop; Write-Host '[OK] Point créé avec succès.' } catch { Write-Host '[INFO] Erreur :' $_.Exception.Message }"
echo [%DATE% %TIME%] Point de restauration manuel créé. >> "%LOG_FILE%"
pause
goto MENU

:SYSTEM_RESTORE
call :PAGE "Restauration Système"
echo  Action : Lancement du programme système Windows `rstrui.exe`.
echo  Bénéfice : Ouvre la fenêtre officielle pour restaurer votre PC à une date antérieure.
call :ASK
start "" "%SystemRoot%\System32\rstrui.exe"
echo [%DATE% %TIME%] Lancement de l'assistant de restauration Windows (rstrui). >> "%LOG_FILE%"
goto MENU

:BACKUP
call :PAGE "Sauvegarde des Réglages"
echo  Action : Export des clés du Registre (Explorer, Démarrage) et du plan d'alimentation actif.
echo  Bénéfice : Crée un fichier de secours local dans %ProgramData%\WindowsOptimizer.
call :ASK
echo.
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer" "%BACKUP_DIR%\Explorer.reg" /y >nul 2>&1
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" "%BACKUP_DIR%\Startup-HKCU.reg" /y >nul 2>&1
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" "%BACKUP_DIR%\Startup-HKLM.reg" /y >nul 2>&1
powercfg /getactivescheme > "%BACKUP_DIR%\powerplan.txt" 2>nul
echo [%DATE% %TIME%] Sauvegarde des clés de registre et du profil d'énergie. >> "%LOG_FILE%"
echo  [OK] Sauvegarde terminée.
pause
goto MENU

:KAKAI_RESTORE
call :PAGE "Restauration des Réglages"
echo  Action : Réimportation des fichiers .REG précédemment sauvegardés.
echo  Bénéfice : Réapplique vos configurations d'origine sauvegardées avec KAKAI OPTIC.
call :ASK
echo.
set "FOUND=0"
if exist "%BACKUP_DIR%\Explorer.reg" ( reg import "%BACKUP_DIR%\Explorer.reg" >nul 2>&1 & set "FOUND=1" )
if exist "%BACKUP_DIR%\Startup-HKCU.reg" ( reg import "%BACKUP_DIR%\Startup-HKCU.reg" >nul 2>&1 & set "FOUND=1" )
if exist "%BACKUP_DIR%\Startup-HKLM.reg" ( reg import "%BACKUP_DIR%\Startup-HKLM.reg" >nul 2>&1 & set "FOUND=1" )
if "%FOUND%"=="1" ( 
    echo  [OK] Sauvegardes restaurées. 
    echo [%DATE% %TIME%] Restauration appliquée depuis le dossier de sauvegarde. >> "%LOG_FILE%"
) else ( 
    echo  [INFO] Aucune sauvegarde trouvée. 
)
pause
goto MENU

:REPAIR
call :PAGE "Réparation Système (SFC / DISM)"
echo  Action 1 : `sfc /scannow` analyse et répare les fichiers système corrompus.
echo  Action 2 : `DISM RestoreHealth` répare l'image Windows à partir des serveurs Microsoft.
echo  Bénéfice : Corrige les bugs, plantages et erreurs système.
call :ASK
echo.
echo  [1/2] Analyse et réparation des fichiers système (SFC)...
sfc /scannow
echo.
echo  [2/2] Réparation de l'image Windows (DISM)...
DISM /Online /Cleanup-Image /RestoreHealth
echo [%DATE% %TIME%] Analyse et réparation SFC / DISM exécutées. >> "%LOG_FILE%"
echo.
echo  [OK] Analyse et réparation terminées.
pause
goto MENU

:ULTRA_QUALITE
call :PAGE "Ultra Qualité"
echo  Action : Maintien de tous les effets visuels (ombres, transparences, animations) et délai menu à 200ms.
echo  Bénéfice : Conserve une interface Windows au maximum de sa qualité visuelle.
call :ASK
call :CONFIRM_RESTORE_POINT
reg add "HKCU\Control Panel\Desktop" /v MenuShowDelay /t REG_SZ /d 200 /f >nul 2>&1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" /v VisualFXSetting /t REG_DWORD /d 1 /f >nul 2>&1
echo [%DATE% %TIME%] Application du profil Ultra Qualité. >> "%LOG_FILE%"
echo  [OK] Profil Ultra Qualité appliqué.
pause
goto MENU

:QUALITE
call :PAGE "Qualité"
echo  Action : Réduction légère du délai des menus à 120ms et ajustement du temps de survol.
echo  Bénéfice : Rend Windows plus fluide tout en gardant une esthétique soignée.
call :ASK
call :CONFIRM_RESTORE_POINT
reg add "HKCU\Control Panel\Desktop" /v MenuShowDelay /t REG_SZ /d 120 /f >nul 2>&1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ExtendedUIHoverTime /t REG_DWORD /d 108000 /f >nul 2>&1
echo [%DATE% %TIME%] Application du profil Qualité. >> "%LOG_FILE%"
echo  [OK] Profil Qualité appliqué.
pause
goto MENU

:OPTIMISER
call :PAGE "Optimiser"
echo  Action : Purge du cache DNS local, optimisation autotuning TCP et nettoyage léger du dossier WinSxS.
echo  Bénéfice : Libère un peu de ressources sans altérer l'aspect visuel de Windows.
call :ASK
call :CONFIRM_RESTORE_POINT
ipconfig /flushdns >nul 2>&1
netsh int tcp set global autotuninglevel=normal >nul 2>&1
DISM /Online /Cleanup-Image /StartComponentCleanup /NoRestart
echo [%DATE% %TIME%] Profil Optimiser appliqué. >> "%LOG_FILE%"
echo  [OK] Optimisation terminée.
pause
goto MENU

:ULTRA_OPTIMISER
call :PAGE "Ultra Optimiser"
echo  Action : Passage en performances élevées, suppression de toutes les animations et réglages TCP agressifs.
echo  Bénéfice : Réactivité maximale du système et libération maximale du CPU/RAM pour les vieux PC.
call :ASK
call :CONFIRM_RESTORE_POINT
powercfg /setactive SCHEME_MIN >nul 2>&1
ipconfig /flushdns >nul 2>&1
netsh int tcp set global autotuninglevel=normal >nul 2>&1
netsh int tcp set global ecncapability=enabled >nul 2>&1
reg add "HKCU\Control Panel\Desktop" /v MenuShowDelay /t REG_SZ /d 0 /f >nul 2>&1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" /v VisualFXSetting /t REG_DWORD /d 2 /f >nul 2>&1
DISM /Online /Cleanup-Image /StartComponentCleanup /NoRestart
echo [%DATE% %TIME%] Profil Ultra Optimiser appliqué. >> "%LOG_FILE%"
echo  [OK] Ultra Optimiser terminé.
pause
goto MENU

:SERVICES_TELEMETRY
call :PAGE "Optimisation Services et Télémétrie"
echo  Action : Désactive DiagTrack, dmwappushservice, WerSvc et le registre de collecte de données.
echo  Bénéfice : Empêche Windows d'envoyer vos données d'utilisation à Microsoft et allège le CPU en arrière-plan.
call :ASK
call :CONFIRM_RESTORE_POINT
echo.
echo  Désactivation de la télémétrie Windows...
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" /v AllowTelemetry /t REG_DWORD /d 0 /f >nul 2>&1
sc config DiagTrack start= disabled >nul 2>&1
sc stop DiagTrack >nul 2>&1
sc config dmwappushservice start= disabled >nul 2>&1
sc stop dmwappushservice >nul 2>&1
echo  Désactivation du service WerSvc...
sc config WerSvc start= disabled >nul 2>&1
echo [%DATE% %TIME%] Désactivation de la télémétrie et des services inutiles. >> "%LOG_FILE%"
echo  [OK] Télémétrie et services inutiles désactivés.
pause
goto MENU

:GAMING
call :PAGE "Optimisation Gaming"
echo  Action : Désactive l'enregistrement vidéo continu Xbox Game DVR et active le Mode Jeu Windows.
echo  Bénéfice : Supprime les micro-saccades (stuttering) et gagne des FPS dans vos jeux.
call :ASK
call :CONFIRM_RESTORE_POINT
echo.
echo  Désactivation de Game DVR et optimisation du mode jeu...
reg add "HKCU\System\GameConfigStore" /v GameDVR_Enabled /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR" /v AppCaptureEnabled /t REG_DWORD /d 0 /f >nul 2>&1
reg add "HKCU\Software\Microsoft\GameBar" /v AllowAutoGameMode /t REG_DWORD /d 1 /f >nul 2>&1
echo [%DATE% %TIME%] Optimisation Gaming (Désactivation GameDVR, activation GameMode). >> "%LOG_FILE%"
echo  [OK] Réglages Gaming appliqués.
pause
goto MENU

:RESEAU
call :PAGE "Optimisation Réseau & Ethernet (RJ45)"
echo  Actions réalisées :
echo   1. Flush DNS : Vide le cache DNS local pour accélérer l'accès aux sites et jeux.
echo   2. TCP AutoTuning ^& ECN : Ajuste le tampon réseau et évite la perte de paquets.
echo   3. Timestamps ^& RSC : Désactive les détails inutiles des paquets pour réduire le CPU.
echo   4. DNS Cloudflare (1.1.1.1 / 1.0.0.1) : Serveurs DNS ultra-rapides.
echo   5. Algorithme Nagle (TcpAckFrequency/TCPNoDelay) : Envoie les paquets sans attente (anti-ping).
echo   6. Supprime la réserve de bande passante QoS (récupère 20%% du débit restreint par Windows).
echo   7. Optimisation Carte Ethernet (RJ45) : Désactive l'économie d'énergie (EEE / Green Ethernet)
echo      pour éliminer les micro-coupures de connexion et active l'Offload checksum.
echo   8. Réinitialisation complète des sockets Winsock et de la pile TCP/IP.
echo  Bénéfice : Ping plus bas, débit maximal constant par câble Ethernet et stabilité réseau optimale.
call :ASK
call :CONFIRM_RESTORE_POINT
echo.
echo  [1/7] Vidage du cache DNS...
ipconfig /flushdns >nul 2>&1
echo  [2/7] Optimisation des paramètres TCP/IP...
netsh int tcp set global autotuninglevel=normal >nul 2>&1
netsh int tcp set global ecncapability=enabled >nul 2>&1
netsh int tcp set global timestamps=disabled >nul 2>&1
netsh int tcp set global rsc=enabled >nul 2>&1
echo  [3/7] Attribution des DNS Cloudflare rapides (1.1.1.1 / 1.0.0.1)...
powershell -NoProfile -Command "Get-NetAdapter | Where-Object {$_.Status -eq 'Up'} | ForEach-Object { Set-DnsClientServerAddress -InterfaceIndex $_.ifIndex -ServerAddresses ('1.1.1.1','1.0.0.1') -ErrorAction SilentlyContinue }" >nul 2>&1
echo  [4/7] Désactivation de la réserve de bande passante QoS...
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Psched" /v NonBestEffortLimit /t REG_DWORD /d 0 /f >nul 2>&1
echo  [5/7] Désactivation de l'algorithme Nagle (Anti-Ping)...
for /f "tokens=*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"') do (
    reg add "%%a" /v TcpAckFrequency /t REG_DWORD /d 1 /f >nul 2>&1
    reg add "%%a" /v TCPNoDelay /t REG_DWORD /d 1 /f >nul 2>&1
)
echo  [6/7] Optimisation avancée du câble Ethernet (Désactivation Green Ethernet ^& Économie d'énergie)...
powershell -NoProfile -Command "Get-NetAdapterAdvancedProperty | Where-Object {$_.DisplayName -like '*Energy Efficient*' -or $_.DisplayName -like '*Green*' -or $_.DisplayName -like '*Power Saving*'} | Set-NetAdapterAdvancedProperty -RegistryValue '0' -ErrorAction SilentlyContinue" >nul 2>&1
powershell -NoProfile -Command "Get-NetAdapter -Physical | Where-Object {$_.MediaType -eq '802.3'} | Disable-NetAdapterPowerManagement -ErrorAction SilentlyContinue" >nul 2>&1
echo  [7/7] Réinitialisation des puces et sockets Winsock/IP...
netsh winsock reset >nul 2>&1
netsh int ip reset >nul 2>&1

echo [%DATE% %TIME%] Optimisation Réseau et Ethernet RJ45 exécutée. >> "%LOG_FILE%"
echo.
echo  [OK] Réseau et carte Ethernet optimisés avec succès.
pause
goto MENU

:CLEAN
call :PAGE "Nettoyage Temps et Corbeille"
echo  Action : Supprime tous les fichiers temporaires dans AppData\Local\Temp et C:\Windows\Temp, puis vide la corbeille.
echo  Bénéfice : Libère de l'espace sur le disque C: et accélère la recherche Windows.
call :ASK
echo.
echo  Nettoyage des fichiers temporaires Windows...
del /f /s /q "%TEMP%\*" >nul 2>&1
del /f /s /q "%SystemRoot%\Temp\*" >nul 2>&1
echo  Vidage de la Corbeille Windows...
powershell -NoProfile -Command "Clear-RecycleBin -Force -ErrorAction SilentlyContinue" >nul 2>&1
ipconfig /flushdns >nul 2>&1
echo [%DATE% %TIME%] Nettoyage Temp et vidage Corbeille. >> "%LOG_FILE%"
echo  [OK] Nettoyage système et corbeille terminés.
pause
goto MENU

:CLEAN_APPS
call :PAGE "Nettoyage Caches Applications"
echo  Action : Purge le cache de navigation de Google Chrome, Microsoft Edge et Discord.
echo  Bénéfice : Libère de la place disque et résout les bugs d'affichage de ces applications.
call :ASK
echo.
echo  Nettoyage des caches...
del /f /s /q "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\*" >nul 2>&1
del /f /s /q "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache\*" >nul 2>&1
del /f /s /q "%APPDATA%\discord\Cache\*" >nul 2>&1
echo [%DATE% %TIME%] Purge des caches web/applications (Chrome, Edge, Discord). >> "%LOG_FILE%"
echo  [OK] Caches d'applications vidés.
pause
goto MENU

:STARTUP
call :PAGE "Gestion du Démarrage"
echo.
echo  [1] Afficher les entrées utilisateur
echo  [2] Désactiver une entrée
echo  [3] Réactiver une entrée
echo  [4] Ouvrir le dossier Startup
echo  [0] Retour
echo.
set "S="
set /p "S=  choix ^> "
if "%S%"=="1" goto STARTUP_LIST
if "%S%"=="2" goto STARTUP_DISABLE
if "%S%"=="3" goto STARTUP_ENABLE
if "%S%"=="4" start "" "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
if "%S%"=="0" goto MENU
goto STARTUP

:STARTUP_LIST
call :PAGE "Liste du Démarrage"
echo  --- HKCU Run ---
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" 2>nul
echo.
echo  --- HKLM Run ---
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 2>nul
pause
goto STARTUP

:STARTUP_DISABLE
call :PAGE "Désactiver une entrée"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" 2>nul
echo.
set "APP="
set /p "APP= Nom EXACT de la valeur à désactiver : "
if not defined APP goto STARTUP
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP%" >nul 2>&1
if errorlevel 1 ( echo  [ERREUR] Entrée introuvable. & pause & goto STARTUP )
for /f "tokens=1,2,*" %%A in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP%" 2^>nul ^| findstr /I "REG_"') do ( set "START_TYPE=%%B" & set "START_DATA=%%C" )
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP%" /f >nul 2>&1
>"%DISABLED_DIR%\%APP%.bak" echo %START_TYPE%
>>"%DISABLED_DIR%\%APP%.bak" echo %START_DATA%
echo [%DATE% %TIME%] Entrée au démarrage désactivée : %APP% >> "%LOG_FILE%"
echo  [OK] %APP% désactivé.
pause
goto STARTUP

:STARTUP_ENABLE
call :PAGE "Réactiver une entrée"
dir /b "%DISABLED_DIR%\*.bak" 2>nul
echo.
set "APP="
set /p "APP= Nom EXACT de l'entrée à réactiver : "
if not exist "%DISABLED_DIR%\%APP%.bak" ( echo  [ERREUR] Introuvable. & pause & goto STARTUP )
set "START_TYPE="
set "START_DATA="
set /p "START_TYPE="<"%DISABLED_DIR%\%APP%.bak"
for /f "skip=1 delims=" %%D in ('type "%DISABLED_DIR%\%APP%.bak"') do if not defined START_DATA set "START_DATA=%%D"
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP%" /t "%START_TYPE%" /d "%START_DATA%" /f >nul 2>&1
del /q "%DISABLED_DIR%\%APP%.bak" >nul 2>&1
echo [%DATE% %TIME%] Entrée au démarrage réactivée : %APP% >> "%LOG_FILE%"
echo  [OK] %APP% réactivé.
pause
goto STARTUP

:POWER
call :PAGE "CPU / Énergie"
echo  Action : Change le plan d'alimentation de Windows via `powercfg`.
echo  Bénéfice : Le mode Hautes Performances force le processeur à tourner à 100%% sans baisses de fréquence.
echo.
echo  [1] Équilibré
echo  [2] Hautes performances
echo  [3] Économiseur
echo  [0] Retour
echo.
set "P="
set /p "P=  choix ^> "
if "%P%"=="1" ( powercfg /setactive SCHEME_BALANCED & echo [%DATE% %TIME%] Plan d'énergie défini sur Équilibré. >> "%LOG_FILE%" )
if "%P%"=="2" ( powercfg /setactive SCHEME_MIN & echo [%DATE% %TIME%] Plan d'énergie défini sur Hautes Performances. >> "%LOG_FILE%" )
if "%P%"=="3" ( powercfg /setactive SCHEME_MAX & echo [%DATE% %TIME%] Plan d'énergie défini sur Économie d'Énergie. >> "%LOG_FILE%" )
if "%P%"=="0" goto MENU
echo  [OK] Plan d'énergie appliqué.
pause
goto MENU

:MEMORY
call :PAGE "Mémoire RAM"
echo  Action : Exécution forcée du Garbage Collector .NET de PowerShell.
echo  Bénéfice : Oblige les processus de fond à vider la mémoire résiduelle non utilisée.
echo.
echo  Libération de la mémoire en cours...
powershell.exe -NoProfile -Command "[System.GC]::Collect(); [System.GC]::WaitForPendingFinalizers()" >nul 2>&1
echo [%DATE% %TIME%] Nettoyage de la mémoire vive via Garbage Collection. >> "%LOG_FILE%"
echo  [OK] Nettoyage mémoire effectué.
pause
goto MENU

:CHANGE_COLOR
call :PAGE "Thème de Couleurs"
echo  [1] Violet / Rose (Par défaut)
echo  [2] Matrix Green
echo  [3] Cyber Red
echo  [4] Ice Blue
echo  [5] Amber Gold
echo  [0] Retour
echo.
set "TC="
set /p "TC=  choix ^> "
if "%TC%"=="1" ( set "C_ROSE=%ESC%[95m" & set "C_BLEU=%ESC%[35m" & set "C_CYAN=%ESC%[36m" )
if "%TC%"=="2" ( set "C_ROSE=%ESC%[92m" & set "C_BLEU=%ESC%[32m" & set "C_CYAN=%ESC%[92m" )
if "%TC%"=="3" ( set "C_ROSE=%ESC%[91m" & set "C_BLEU=%ESC%[31m" & set "C_CYAN=%ESC%[91m" )
if "%TC%"=="4" ( set "C_ROSE=%ESC%[96m" & set "C_BLEU=%ESC%[36m" & set "C_CYAN=%ESC%[96m" )
if "%TC%"=="5" ( set "C_ROSE=%ESC%[93m" & set "C_BLEU=%ESC%[33m" & set "C_CYAN=%ESC%[93m" )
goto MENU

:PING_TEST
call :PAGE "Test de Latence Réseau"
echo  Action : Envoie 4 requêtes ICMP vers Cloudflare et Google.
echo  Bénéfice : Affiche votre latence (ping) actuelle exacte.
echo.
echo  --- Cloudflare (1.1.1.1) ---
ping -n 4 1.1.1.1 | findstr /i "Minimum"
echo.
echo  --- Google (8.8.8.8) ---
ping -n 4 8.8.8.8 | findstr /i "Minimum"
echo.
pause
goto MENU

:PAGEFILE
call :PAGE "Optimisation RAM Virtuelle (Pagefile)"
echo  Action : Réactive la gestion automatique par Windows du fichier `pagefile.sys`.
echo  Bénéfice : Prévient les erreurs de mémoire insuffisante et les crashs de jeux lourds.
call :ASK
echo.
echo  Configuration automatique du fichier d'échange gérée par le système...
wmic computersystem where name="%computername%" set AutomaticManagedPagefile=True >nul 2>&1
echo [%DATE% %TIME%] Fichier d'échange (pagefile) passé en gestion automatique par Windows. >> "%LOG_FILE%"
echo  [OK] Taille optimale réattribuée automatiquement.
pause
goto MENU

:EXPORT_REPORT
call :PAGE "Exportation du Rapport Système"
echo  Action : Génère un fichier texte complet contenant la fiche technique de votre PC, l'historique des modifications exécutées et les explications techniques.
echo.
echo  Génération du rapport complet sur votre Bureau...

for /f "delims=" %%I in ('powershell -NoProfile -Command "[Environment]::GetFolderPath('Desktop')"') do set "DESKTOP_DIR=%%I"
set "REP_FILE=%DESKTOP_DIR%\Rapport_Systeme_KAKAI.txt"

echo ======================================================================= > "%REP_FILE%"
echo                  RAPPORT SYSTEME - KAKAI OPTIC v9.4                    >> "%REP_FILE%"
echo ======================================================================= >> "%REP_FILE%"
echo Généré le      : %DATE% à %TIME% >> "%REP_FILE%"
echo Nom du PC      : %COMPUTERNAME% >> "%REP_FILE%"
echo Utilisateur    : %USERNAME% >> "%REP_FILE%"
echo Architecture   : %PROCESSOR_ARCHITECTURE% >> "%REP_FILE%"
echo ======================================================================= >> "%REP_FILE%"
echo. >> "%REP_FILE%"

echo --- CARACTERISTIQUES MATERIELLES --- >> "%REP_FILE%"
echo. >> "%REP_FILE%"
echo [ Processeur ] >> "%REP_FILE%"
powershell -NoProfile -Command "Get-CimInstance Win32_Processor | Select-Object -ExpandProperty Name" >> "%REP_FILE%"
echo. >> "%REP_FILE%"
echo [ Mémoire RAM Totale ] >> "%REP_FILE%"
powershell -NoProfile -Command "Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum | Select-Object @{N='RAM (Go)';E={[math]::Round($_.Sum/1GB,2)}} | Format-List" >> "%REP_FILE%"
echo. >> "%REP_FILE%"
echo [ Carte Graphique ] >> "%REP_FILE%"
powershell -NoProfile -Command "Get-CimInstance Win32_VideoController | Select-Object -ExpandProperty Name" >> "%REP_FILE%"
echo. >> "%REP_FILE%"

echo ======================================================================= >> "%REP_FILE%"
echo --- HISTORIQUE DES MODIFICATIONS ET ACTIONS EXECUTEES --- >> "%REP_FILE%"
echo ======================================================================= >> "%REP_FILE%"
if exist "%LOG_FILE%" (
    type "%LOG_FILE%" >> "%REP_FILE%"
) else (
    echo Aucune modification enregistrée au cours de cette session. >> "%REP_FILE%"
)
echo. >> "%REP_FILE%"

echo ======================================================================= >> "%REP_FILE%"
echo --- GUIDE & EXPLICATIONS DES OPTIMISATIONS SYSTEME --- >> "%REP_FILE%"
echo ======================================================================= >> "%REP_FILE%"
echo. >> "%REP_FILE%"
echo [ OPTIMISATION RESEAU ET ETHERNET ] >> "%REP_FILE%"
echo - Flush DNS : Vide le cache DNS local pour corriger les erreurs d'accès réseau. >> "%REP_FILE%"
echo - AutoTuning / ECN : Ajuste dynamiquement le tampon de réception réseau et prévient la perte de paquets. >> "%REP_FILE%"
echo - DNS Cloudflare (1.1.1.1 / 1.0.0.1) : Serveurs DNS ultra-rapides remplaçant ceux par défaut de votre FAI. >> "%REP_FILE%"
echo - Anti-Nagle (TcpAckFrequency / TCPNoDelay) : Force l'envoi immédiat des paquets réseau sans attendre de les grouper (baisse directe du ping dans les jeux en ligne). >> "%REP_FILE%"
echo - Suppression réserve QoS : Récupère les 20%% de bande passante réseau réservés par défaut par Windows. >> "%REP_FILE%"
echo - Désactivation Green Ethernet : Empêche la carte réseau câble d'entrer en mode veille économique, supprimant ainsi les drops de ping et micro-déconnexions. >> "%REP_FILE%"
echo. >> "%REP_FILE%"

echo [ GAMING ET MODE JEU ] >> "%REP_FILE%"
echo - GameDVR_Enabled = 0 / AppCaptureEnabled = 0 : Désactive la capture vidéo constante de Windows en arrière-plan, libérant du processeur et du disque. >> "%REP_FILE%"
echo - AllowAutoGameMode = 1 : Active le mode jeu officiel de Windows pour prioriser l'allocation de la mémoire et du CPU aux jeux. >> "%REP_FILE%"
echo. >> "%REP_FILE%"

echo [ TELEMETRIE ET SERVICES ] >> "%REP_FILE%"
echo - AllowTelemetry = 0 : Bloque la collecte de données continue de Windows. >> "%REP_FILE%"
echo - DiagTrack / dmwappushservice / WerSvc : Désactive les services de télémétrie et de rapport d'erreur pour alléger la charge processeur. >> "%REP_FILE%"
echo. >> "%REP_FILE%"

echo [%DATE% %TIME%] Génération et exportation du rapport système sur le bureau. >> "%LOG_FILE%"

echo.
echo  [OK] Fichier 'Rapport_Systeme_KAKAI.txt' généré sur votre bureau.
pause
goto MENU

:INFO
call :PAGE "Informations Système Détaillées"
echo  [ Processeur ]
powershell -NoProfile -Command "Get-CimInstance Win32_Processor | Select-Object -ExpandProperty Name"
powershell -NoProfile -Command "Get-CimInstance Win32_Processor | Select-Object @{N='Coeurs Physiques';E={$_.NumberOfCores}}, @{N='Threads Logiques';E={$_.NumberOfLogicalProcessors}} | Format-List"

echo  [ Carte Graphique ]
powershell -NoProfile -Command "Get-CimInstance Win32_VideoController | Select-Object -ExpandProperty Name"

echo.
echo  [ Mémoire RAM ]
powershell -NoProfile -Command "Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum | Select-Object @{N='RAM Totale (Go)';E={[math]::Round($_.Sum/1GB,2)}} | Format-List"

echo  [ Carte Mère et BIOS ]
powershell -NoProfile -Command "Get-CimInstance Win32_BaseBoard | Select-Object @{N='Fabricant';E={$_.Manufacturer}}, @{N='Modèle';E={$_.Product}} | Format-List"
powershell -NoProfile -Command "Get-CimInstance Win32_BIOS | Select-Object @{N='Version BIOS';E={$_.SMBIOSBIOSVersion}} | Format-List"

echo  [ Système d'Exploitation ]
echo  PC          : %COMPUTERNAME%
echo  Utilisateur : %USERNAME%
powershell -NoProfile -Command "Get-CimInstance Win32_OperatingSystem | Select-Object @{N='OS';E={$_.Caption}}, @{N='Version';E={$_.Version}} | Format-List"

echo.
pause
goto MENU

:QUIT
cls
echo.
echo  Merci d'avoir utilisé l'optimasation Kak4i0ptiC ! 
timeout /t 2 >nul
exit /b