Disk Cleanup Master — Nettoyeur de Disque Windows
Principes Fondamentaux (À Ne Pas Enfreindre)
- Analyse Agressive, Suppression Prudente
- Phase d'analyse : Parcourir largement, vérifier en profondeur, ne pas hésiter à signaler en excès
- Phase de suppression : Chaque opération doit montrer le contenu, la taille, le risque à l'utilisateur, et obtenir une confirmation explicite avant exécution
- Modèle de Sécurité Feu Tricolore
- 🟢 Vert (Suppression Sûre) : Temp, caches navigateur, pip cache,
__pycache__, résidus d'anciens installateurs, Cache/Log explicitement marqués par l'application, anciens composants WinSxS - 🟡 Jaune (Confirmation Utilisateur Requise) : Sauvegardes de jeux, enregistrements WeChat/QQ, fichiers cloud WPS, fichiers personnels dans Téléchargements, données globales d'application dans ProgramData
- 🔴 Rouge (Interdiction de Suppression Sans Autorisation) : Répertoires système Windows, Program Files, fichiers de projet en cours d'utilisation, données non sauvegardées
- 🟢 Vert (Suppression Sûre) : Temp, caches navigateur, pip cache,
- Traitement Spécial des Applications Chinoises
- Les applications Tencent (WeChat/QQ/WeCom), NetEase, WPS, Baidu utilisent souvent des chemins codés en dur et ne respectent pas les API Windows Known Folders
- Ne jamais couper/renommer leurs dossiers directement ; modifier le chemin dans les paramètres du logiciel
- Voir
references/chinese-app-special-cases.mdpour les détails
Flux de Travail Standard
Étape 1 : Analyse Panoramique (Agressive)
- Utiliser
Get-PSDrivepour obtenir un aperçu de l'espace disque - Utiliser
scripts/tree_size_scanner.pypour une analyse hiérarchique — depuis le répertoire racine, trier par taille, explorer couche par couche le plus gros dossier, localiser rapidement la source de consommation d'espace - Effectuer une analyse ciblée des zones critiques : AppData, Documents, ProgramData
- Objectif : Fournir une carte d'occupation du disque en 5 minutes
Stratégie d'Analyse Hiérarchique :
# Vue panoramique du disque C (afficher les dossiers >500 Mo, profondeur 4)
python scripts/tree_size_scanner.py "C:\\" 500 4
# Localisation rapide des gros dossiers sur D/E
python scripts/tree_size_scanner.py "D:\\" 5000 3
- D'abord analyser la racine, trouver les plus gros dossiers
- Ensuite, analyser en profondeur chaque gros dossier individuellement
- Ignorer automatiquement les répertoires système (Windows, Program Files) pour éviter les erreurs
Recherche d'Applications/Jeux Spécifiques (Non Installés via Plateforme) :
# Recherche par mot-clé dans les noms de dossiers (profondeur 6, sans calcul de taille, ultra-rapide)
python scripts/find_folders_by_keyword.py "D:\\" "Call of Duty|COD|Modern Warfare"
Étape 2 : Classification et Évaluation des Risques
- Classer les résultats d'analyse selon 🟢🟡🔴
- Marquer les éléments jaunes avec des risques spécifiques (ex : "Sauvegarde WeChat 33 Go, perte définitive après changement de téléphone")
- Exclure directement les éléments rouges, aucune action
Étape 3 : Présenter le Rapport à l'Utilisateur
- Utiliser un tableau : Zone, Taille, Niveau de Risque, Action Suggérée
- Laisser l'utilisateur cocher ou répondre explicitement "quoi supprimer"
- Interdiction d'effectuer une suppression en lot sans confirmation élément par élément
Étape 4 : Exécuter le Nettoyage
- Éléments verts : Exécution directe, mais rapport des résultats après exécution
- Éléments jaunes : Confirmation utilisateur pour un élément, puis exécution
- Avant exécution, utiliser
--dry-runou un mode aperçu
Étape 5 : Vérification
- Vérifier l'espace disque après nettoyage
- Pour les opérations de migration (ex : Documents), effectuer un test d'écriture pour valider le chemin
Guide de Nettoyage Spécifique du Disque C
Nettoyage Système Sécurisé (Vert)
# Fichiers temporaires
$env:TEMP # Fichiers temporaires utilisateur
C:\Windows\Temp # Fichiers temporaires système
C:\Windows\SoftwareDistribution\Download # Cache Windows Update
# Caches navigateur
$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache
$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache
# Corbeille
C:\$Recycle.Bin
# Fichier d'hibernation (si l'utilisateur n'utilise pas l'hibernation)
# powercfg /hibernate off
Nettoyage du Stockage de Composants WinSxS (Vert Haute Valeur)
WinSxS (C:\Windows\WinSxS) est le dépôt de composants système Windows. Chaque mise à jour conserve les anciennes versions pour permettre le rollback. Sur le long terme, il peut accumuler 10-20 Go.
Analyse de l'espace récupérable :
dism /Online /Cleanup-Image /AnalyzeComponentStore
Exécution du nettoyage (sûr, recommandé) :
dism /Online /Cleanup-Image /StartComponentCleanup
- Après nettoyage, impossible de désinstaller les mises à jour Windows déjà installées (impact minimal en pratique)
- Permet généralement de récupérer quelques centaines de Mo à plusieurs Go
- Prend 3-10 minutes, peut s'exécuter en arrière-plan
Nettoyage plus agressif (prudence) :
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase
- Libère plus d'espace, mais rend impossible le rollback de toute mise à jour
- À envisager uniquement en cas de manque critique d'espace disque
Gestion de l'Environnement Python Global
pip list --format=freezepour voir le nombre total de paquetspip list --not-requiredpour identifier les paquets de niveau supérieur installés directement par l'utilisateur (généralement bien moins que le total)pip checkpour vérifier les conflits de dépendancespip cache purgepour nettoyer le cache de téléchargement pip- Nettoyer les résidus d'installation corrompus dans
site-packagescommençant par~ - Nettoyer tous les dossiers
__pycache__:Get-ChildItem -Path $sitePackages -Recurse -Directory -Filter "__pycache__" | Remove-Item -Recurse -Force - Attention : La résolution des conflits de dépendances peut rencontrer des paquets mutuellement exclusifs (ex : pyjwt requis dans des plages de versions différentes par deux paquets), l'utilisateur doit décider lequel conserver
Analyse Ciblée d'AppData
AppData est un gros consommateur caché sur le disque C, généralement divisé en :
Local: Caches d'application, données d'exécution (grand potentiel de nettoyage)Roaming: Configurations utilisateur, historiques de chat (prudence)LocalLow: Données d'application à faible privilège (généralement petites)
Gros éléments courants :
Local\Netease\CloudMusic\Cache— Cache NetEase Cloud Music (supprimable)Roaming\Kingsoft\office6\backup— Sauvegardes de crash WPS (supprimable)Roaming\Tencent— Données WeChat PC (jaune, voir référence)
Analyse Ciblée de ProgramData
ProgramData est un gros consommateur souvent négligé du disque C. Il stocke les données globales d'application, les caches d'installation et les configurations de pilotes de périphériques.
Stratégie de Classification :
| Catégorie | Chemin Typique | Risque | Exemple |
|---|---|---|---|
| Données de pilotes | NVIDIA, NVIDIA Corporation, LGHUB, ASUS | 🔴 Ne pas toucher | Suppression peut causer des anomalies périphériques |
| Données globales d'application | Tencent, anaconda3, 0install.net | 🟡 Supprimer après confirmation | Supprimable si l'application n'est plus utilisée |
| Caches d'installation | Package Cache, Microsoft\VisualStudio | 🟡 Prudence | Suppression peut empêcher la désinstallation/réparation du programme |
| Données système | Microsoft\Windows Defender, Microsoft\Search | 🔴 Ne pas toucher | Composants système essentiels |
Commande d'analyse :
# Utiliser le script pour éviter le timeout des commandes individuelles
python scripts/scan_programdata.py
Éléments nettoyables courants :
anaconda3— Si un autre environnement Python est utilisé, peut être désinstallé (généralement 3-8 Go)0install.net— Données du gestionnaire de paquets Zero Install, supprimable si non utilisé (quelques centaines de Mo)Tencent\QQPCMgr— Données QQ PC Manager (supprimable si non utilisé)Tencent\WeType— Données WeType Input (supprimable si non utilisé)
Processus de Désinstallation d'Applications Lourdes (Jaune → Vert)
Pour les résidus d'application dans ProgramData ou Program Files, ne pas supprimer directement les dossiers. Suivre le processus de désinstallation standard :
-
Rechercher le programme de désinstallation dans le registre
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | Where-Object { $_.DisplayName -match "Anaconda" } -
Désinstallation silencieuse (installateur NSIS)
& "C:\ProgramData\anaconda3\Uninstall-Anaconda3.exe" /S- Attention : L'option
/Speut retourner immédiatement, sans attendre la fin de la désinstallation - Il faut interroger en boucle la disparition du dossier :
while (Test-Path "C:\ProgramData\anaconda3") { Start-Sleep -Seconds 10 } - Attention : L'option
-
Nettoyer les résidus
- Vérifier et supprimer les dossiers résiduels
- Vérifier les variables d'environnement PATH :
[Environment]::GetEnvironmentVariable("Path", "User") -split ";" | Select-String "anaconda" [Environment]::GetEnvironmentVariable("Path", "Machine") -split ";" | Select-String "anaconda" -
Dernière solution pour les dossiers tenaces : Robocopy Empty Trick Quand
Remove-Item -Forceettakeown + icaclséchouent :$empty = "C:\temp_empty_$(Get-Random)" New-Item -ItemType Directory -Path $empty -Force | Out-Null robocopy $empty "C:\ProgramData\0install.net" /MIR /R:1 /W:1 /NP /NFL /NDL Remove-Item $empty -Force Remove-Item "C:\ProgramData\0install.net" -Force- Principe : Écraser le dossier cible avec un dossier vide en miroir, forçant la suppression du contenu
- Avertissement :
robocopy /MIRvide complètement la cible, ne jamais inverser les directions !
Migration des Répertoires Utilisateurs
Dossiers Standard Windows (Documents / Bureau / Téléchargements / Images / Vidéos)
- Bonne pratique : Clic droit sur le dossier → Propriétés → Emplacement → Déplacer
- Il s'agit d'une redirection système ; les programmes utilisant les API de chemin pointeront automatiquement vers le nouvel emplacement
- Après migration, si l'ancien dossier est verrouillé et ne peut être supprimé, redémarrer puis traiter
Données d'Applications Tierces
- Mauvaise pratique : Couper directement les dossiers d'application dans AppData ou Documents vers un nouveau disque
- Bonne pratique : Modifier dans les paramètres de chaque logiciel "Gestion des fichiers/Emplacement de stockage" pour laisser le logiciel migrer lui-même
- Exception : Les bibliothèques de jeux Steam peuvent être ajoutées/migrées dans les paramètres Steam
Analyse des Bibliothèques de Jeux
Steam
- Dossier de bibliothèque :
steamapps\common\(jeux installés) - Téléchargements incomplets :
steamapps\downloading\(supprimable en toute sécurité) - Workshop :
steamapps\workshop\(nettoyable manuellement après désabonnement) - La désinstallation des jeux doit passer par le client Steam, ne pas supprimer directement les dossiers
WeGame
- Données de plateforme :
WEGAME\ - Données de jeux :
WeGameApps\rail_apps\ - Jeux volumineux courants : LOL (~40-50 Go), Valorant (~30 Go)
Pièges Courants et Expériences
-
Risque robocopy /MIR
/MIRéquivaut à une synchronisation miroir, supprime les fichiers supplémentaires du côté cible. Une inversion de direction efface les données- Les opérations sur de grands dossiers peuvent expirer, mais le processus robocopy continue en arrière-plan, bloquant les E/S ultérieures
- Gestion : Vérifier après opération
Get-Process robocopy, tuer si nécessaire
-
Robocopy Empty Trick (Suppression des dossiers tenaces)
- Quand les fichiers sont verrouillés, permissions insuffisantes,
takeownéchoue, utiliser un dossier vide +/MIRpour forcer le vidage de la cible - Obligatoire : Créer d'abord un dossier vide indépendant comme source, confirmer le chemin cible avant exécution
- Ne jamais utiliser un répertoire système (comme
C:\Windows) comme cible
- Quand les fichiers sont verrouillés, permissions insuffisantes,
-
Pollution de la sortie d'analyse
- Exécuter plusieurs
Get-ChildItem | Format-Tableen parallèle dans une seule commande Shell peut mélanger les flux de sortie (ex : résultatsNVIDIA Corporationmélangés avec dossierTencent) - Gestion : Analyser un seul répertoire à la fois, ou utiliser un script Python pour une sortie unifiée
- Exécuter plusieurs
-
Comportement asynchrone des désinstallateurs NSIS
- Les désinstallateurs silencieux avec
/Speuvent retourner immédiatement, sans bloquer en attendant la fin - Gestion : Après lancement, interroger en boucle la disparition du dossier d'installation ou vérifier la liste des processus
- Les désinstallateurs silencieux avec
-
Verrouillage de fichiers
- WeChat, WPS, QQ et autres applications en arrière-plan verrouillent leurs fichiers de données, empêchant le renommage/suppression
- Gestion : Fermer les processus correspondants (y compris les démons), puis agir
-
Noms de fichiers Unicode
- Les noms de fichiers chinois sous Windows peuvent provoquer des erreurs d'encodage dans PowerShell/Python
- Gestion : Utiliser
.encode('ascii', 'replace').decode('ascii')dans les scripts Python pour une sortie sécurisée
-
Timeout de Measure-Object -Sum
- Pour les dossiers contenant des centaines de milliers de fichiers (ex : cache WeChat, ressources de jeux),
Get-ChildItem -RecurseavecMeasure-Objectpeut expirer - Gestion : Utiliser
robocopy $path \NULL /L /S /NJH /NJS /BYTESpour les statistiques, ou limiter la profondeur d'analyse
- Pour les dossiers contenant des centaines de milliers de fichiers (ex : cache WeChat, ressources de jeux),
-
Stratégie ultime pour les grands dossiers (Hiérarchique + Mots-clés)
Get-ChildItem -Recurseetrobocopy /L /Speuvent expirer sur les bibliothèques Steam ou lors d'analyses de disque entier- Gestion :
- Filtre grossier : Utiliser
os.scandirpour ne scanner que les dossiers >5 Go sous la racine, instantané - Forage : Utiliser
tree_size_scanner.pypour explorer couche par couche les gros dossiers - Recherche ciblée : Utiliser
find_folders_by_keyword.pypour une correspondance par mots-clés dans les noms de dossiers, avec profondeur limitée (≤6 couches), sans calcul de taille, pour éviter le timeout - Si les trois étapes ci-dessus échouent, alors seulement envisager une récursion complète
- Filtre grossier : Utiliser
Liste des Outils Script
scripts/tree_size_scanner.py <path> [min_mb] [max_depth]— Analyse hiérarchique : depuis la racine, explorer couche par couche le plus gros dossier, générer une carte d'occupation du disquescripts/scan_large_folders.py <path>— Analyse rapide des grands dossiers sous un chemin donné (profondeur limitée pour éviter le timeout)scripts/scan_programdata.py— Analyse ciblée de C:\ProgramData, classer et afficher les grands dossiers par niveau de sécuritéscripts/find_folders_by_keyword.py <path> <pattern>— Recherche par mots-clés dans les noms de dossiers (profondeur 6, sans calcul de taille, ultra-rapide)scripts/find_zombie_packages.py— Analyser l'environnement pip global, lister les paquets de niveau supérieur et les conflits de dépendancesscripts/cleanup_temp.ps1 [-WhatIf]— Nettoyage sécurisé de Temp, caches navigateur, pip cache, WinSxS (support du mode aperçu)scripts/robocopy_wipe.py <target>— Supprimer les dossiers tenaces avec la technique Robocopy empty trick (inclut une vérification de sécurité du chemin)
Modèle de Sortie
Lors du rapport à l'utilisateur, utiliser le modèle de tableau suivant :
| Zone | Taille | Risque | Suggestion |
|---|---|---|---|
| ... | ... | 🟢/🟡/🔴 | ... |
Rapport après nettoyage :
| Lecteur | Espace libre avant | Espace libre après | Espace libéré |
|---|---|---|---|
| ... | ... | ... | ... |