| ||||||||
Astucien | Salut à toutes et toutes, Avez vous une astuce pour détecter et effacer les noms de dossier vides, donc inutiles, dans les répertoires suivants dans la partition C: car le faire un par un est positif, mais sur une bécane "chargée" c'est trop fastidieux | |||||||
Publicité | ||||||||
| ||||||||
Astucien | Je viens de trouver une application pour détecter les dossiers vides pour W10 et tu es sur W11. https://www.carinna.fr/comment-trouver-des-dossiers-vides-dans-windows-10/ Compatibilité aidant on ne sait jamais, teste le pour voir.
| |||||||
Astucien | skale a écrit : merci pour l'info, mais s'il semble compatible avec W11 Pro 64 à l'installation (Anglais seulement), certaines réactions me disent que ce n'est pas du 100%, alors j'ai obtenu une très très longue liste de dossiers vides, mais avant d'essayer un "Delete" de ces dossiers (affichage en rouge) je vais faire deux bonnes sauvegardes, système et Aomeï Mais l'interface me fait penser tout de même, à un soft très ancien, alors prudence ... Je reviendrai +tard | |||||||
Grand Maître astucien | ||||||||
Petite astucienne | Bonjour, C'est possible avec Glary utilities
| |||||||
Astucien | poussebois, Merci, je vais même l'essayer en premier, car l'autre de notre ami Skale me chagrine quand même un peu | |||||||
Astucien | Merci aussi à arrianrhod mais Glary je connais et je laisse de côté Pour les deux autres, je préfère, comme ça, sans essai TreeSize
Mais l'autre j'ai un peu la c'htouille comme on dit dans ma région d'origine, alors je vais réfléchir avant de faire une connerie à vous trois | |||||||
Grand Maître astucien | Bonjour, Il n'y a besoin d'aucun logiciel pour faire ça, un script de quelques lignes suffit. C'est la vocation même d'un script que d'automatiser une opération manuelle fastidieuse. Voici le source d'un script vbs qui supprime tous les sous-répertoires vides d'un répertoire donné. '------------------------------------------------' ' ' ' SUPPRESSION SOUS-RÉPERTOIRES VIDES ' ' ' ' ' Auteur : Heffgé Date : septemnbre 2024 ' ' ' '------------------------------------------------' '----------------- 'Initalialisations '----------------- titre = "S U P P R E S S I O N S O U S - R É P E R T O I R E S V I D E S" Set monsysfic = CreateObject("Scripting.FileSystemObject") '------------------- 'Saisie et contrôles '------------------- src = "" trouv = false do while trouv = false src = InputBox("Saisissez le nom du répertoire à traîter", titre, src) if src = "" then msgbox("Annulation demandée") exit do end if if monsysfic.FolderExists(src) then trouv = true set rep = monsysfic.getfolder(src) suppr rep, ret if ret <> "" then msgbox("Erreur d'écriture, procédure arrêtée à la ligne :" & cbcrlf & ret) else msgbox("Suppressions effectuées") end if else msgbox ("Ce répertoire n'a pas été trouvé") end if loop set rep = nothing set monsysfic = nothing '------------------------ 'Procédure de suppression '------------------------ Private sub suppr( byref rep, byref ret) set lst = rep.SubFolders for each srep in lst if srep.size = 0 then on error resume next srep.delete(true) if err.number <> 0 then ret = "Procédure interrompue." & vbcrlf & "Impossible de supprimer le répertoire : " & srep.name & "." exit sub end if end if next set lst = nothing end sub
Faire un copier coller de ce souce dans un fichier texte et l'enregistrer avec l'extension vbs. Attention, c'est sans filet. Pas de transit vers la corbeille. La procédure s'interrompt au premier sous-répertoire vide non supprimable. Tu fais ce que tu veux mais personnellement je ne m'attaquerais pas en aveugle à ProgramData.
Modifié par fgondard le 20/09/2024 18:34 | |||||||
Astucien | fgondard a écrit : Merci, en effet ce dossier normalement caché, même si je l'ai affiché, je n'y touche pas, trop sensible
| |||||||
Grand Maître astucien | Et tu as testé mon script ? | |||||||
Astucien | Non, j'ai pas tenté, car tu dis c'est "sans filet", alors prudence pour moi, je suis à l'aise avec les restaurations, mais pas envie de refaire mon fixe avec AOMEI, il fonctionne trop bien pour l'instant | |||||||
Astucien | Solo44 a écrit : En fait j'ai quand même testé sans succès, mais je ne sais pas exactement quelle partie du script est à copier/coller '------------------------------------------------' ' ' ' SUPPRESSION SOUS-RÉPERTOIRES VIDES ' ' ' ' ' Auteur : Heffgé Date : septemnbre 2024 ' ' ' '------------------------------------------------' ------------------------------ entre début et fin ? -------------------------------- next set lst = nothing end sub | |||||||
Grand Maître astucien | C'est l'ensemble qu'il faut prendre. Pour tester il suffit de créer un jeu d'essai : un répertoire contenant par exemple deux-sous répertoires vides et deux autres contenant chacun un fichier texte même vide. | |||||||
Astucien | Il y a une solution encore plus simple : ne rien supprimer du tout dans le C: Car franchement, les dossiers vides ne pèsent rien dans le total occupé, ne gène en rien dans le fonctionnement du PC, et les laisser évite de se retrouver avec un écran bleu au redémarrage. | |||||||
Astucien | Gallagh a écrit :
Sage décision en effet, mais chez moi la curiosité l'emporte souvent et, suite à l'essai et désinstallation de nombreux logiciels, je constate souvent que même désinstallés (façon musclée) des traces restent toujours présentes (répertoires) surtout dans le AppData Mais dans C:\Programmes voir le (86) le risque est plus sérieux même pour un fan de la sauvegarde
Alors je laisse tomber cette aventure merci à tous | |||||||
Grand Maître astucien |
Sage décision. J'ai cependant étoffé un peu mon script qui peut bien sûr servir dans d'autres cas de figure. Voici la nouvelle mouture : '------------------------------------------------' ' ' ' SUPPRESSION SOUS-RÉPERTOIRES VIDES ' ' ' ' ' Auteur : Heffgé Date : septemnbre 2024 ' ' ' '------------------------------------------------' '----------------- 'Initalialisations '----------------- titre = "S U P P R E S S I O N S O U S - R É P E R T O I R E S V I D E S" Set monsysfic = CreateObject("Scripting.FileSystemObject") Set monshell = CreateObject("WScript.Shell") tmp = monshell.ExpandEnvironmentStrings("%temp%") journ = tmp & "\log_suppr.txt" nbsrep = 0 nbsuppr = 0 nbano = 0 '------------------- 'Saisie et contrôles '------------------- src = "" trouv = false do while trouv = false src = InputBox("Saisissez le nom du répertoire à traîter", titre, src) if src = "" then msgbox("Annulation demandée") exit do end if if monsysfic.FolderExists(src) then trouv = true set rep = monsysfic.getfolder(src) set fic = monsysfic.CreateTextFile(journ, true) fic.WriteLine("L I S T E D E S S O U S - R E P E R T O I R S V I D E S") suppr fic.close msg = "Procédure terminée : " & vbcrlf msg = msg & " - " & nbsrep & " sous-répertoires trouvés" & vbcrlf msg = msg & " - " & nbsuppr & " sous-répertoires vides supprimés" & vbcrlf msg = msg & " - " & nbano & " sous-répertoires vides non supprimés" msgbox(msg) monshell.Run "%windir%\notepad " & journ, 1 else msgbox ("Ce répertoire n'a pas été trouvé") end if loop set rep = nothing set fic = nothing set monshell = nothing set monsysfic = nothing '------------------------ 'Procédure de suppression '------------------------ Private sub suppr set lst = rep.SubFolders for each srep in lst nom = srep.name nbsrep = nbsrep + 1 if srep.size = 0 then on error resume next srep.delete(true) if err.number <> 0 then nbano = nbano + 1 ligne = nom & " : sous-répertoire impossible à supprimer" else nbsuppr = nbsuppr + 1 ligne = nom & " : sous-répertoire supprimé avec succès" end if fic.WriteLine(ligne) end if next set lst = nothing end sub
Le script demande qu'on saisisse le nom du répertoire duquel on souhaite supprimer les sous répertoires vides (ceux du premier niveau uniquement). Le message de fin indique le nombre de sous-répertoires trouvés, celui de sous-répertoires vides supprimés et celui de ceux qui, pour une raison ou une autre, n'ont pas pu être supprimés. À la fermeture un fichier journal est automatquement affiché. Il contient la liste des sous-répertoires vides avec pour chacun le résultat de l'opération. | |||||||
Astucien | Petite précision, lors de la saisie du script dans le bloc notes par exemple, le saisir en codage ANSI, l'UFT-8 comme proposé par défaut sous W11 (ou autres) provoque trop d'erreur d'écritures et puis en ce qui me concerne, je n'ai jamais pu saisir le nom de mon répertoire correctement, sans échec notifié. | |||||||
Grand Maître astucien |
Plutôt de taille ! J'ai oublié qu'à partir de Windows 10 le bloc-notes s'était enrichi et qu'à l'enregistrement on pouvait choisir le type d'encodage. Et malheureusement par défaut c'est Unicode ! S'il m'arrive de nouveau de publier un script, vbs ou bat, il faudra que je n'oublie pas de mentionner ce point. Merci pour ton intervention.
| |||||||
Maître astucien | Je pense que tu perds du temps pour rien. Les dossiers vides ne prennent pas beaucoup de place et tu devrais les laisser et passer plus de temps à apprendre à utiliser les logiciels. C'est plus enrichissant de faire de la photo, du montage vidéo... et même utiliser Word ou Excel correctement. | |||||||
Astucien | Super_GEGE a écrit : Pour le début de ta remarque, tu as raison et comme déjà dit je laisse tomber, quant à Word et Excel, je l'ai pratiqué professionnellement pendant 30 ans et je continue, les Photos j'en ai plus de 100 000, car aussi accro de Généalogie depuis 25 ans, pour la vidéo, là c'est plus difficile, j'en ai fait, mais maintenant sans application sérieuse et dédiée, je n'en fais plus Alors je vadrouille dans mon informatique, par curiosité, même sur des sujets souvent hors de mes connaissances, mais vous êtes là
| |||||||
Grand Maître astucien | Je remets à tout hasard mes deux batches "pattern" pour horodatage du nom d'un dossier ou fichier, l'un en ANSI l'autre en UTF8.
À noter qu'il n'y a pas besoin de taper ou coller le chemin\nom du dossier ou fichier : le premier paramètre, %1, désigne le dossier ou fichier avec tout ce qu'il faut (tout comme 0% désignerait le bat lui-même) : il suffit de poser l'icône du dossier ou fichier (ou d'un raccourci vers lui) sur celle du bat (ou d'un raccourci vers lui), pas de souci d'accent ou caractère spécial dans le nom ni chemin. Je pense que cette commodité est faisable dans un vbs, par contre je sais pas s'il y a l'équivalent de la commande chcp ...
Modifié par yves.vaissiere le 22/09/2024 15:01 | |||||||
Grand Maître astucien | Nativement VBS ne connaît que l'ANSI. Ceci touche notamment les objets de type File System. D'après cette page on pourrait toutefois utiliser l'UTF8 avec quelque chose qui s'appelle ADO mais que je ne connais pas. On peut appeler un script vbs avec des paramètres mais il faut avoir explicitement prévu leur lecture dans le code. Exemple : myvar = wScript.Arguments(n) . | |||||||
Grand Maître astucien | Oui, j'ai même le souvenir d'un glisser-déposer sur un vbs ... | |||||||
Maître astucien | Bon, je suis trop gentil, ça me perdra si ce n'est pas déjà fait.
Tu ouvres l'explorateur, tu te positionnes de manière à voir tous tes disques pour lancer une recherche globale et tu cliques dans la fenêtre de recherche. Tu vas alors voir apparaitre un onglet"Recherche" Dans "taille" tu mets vide 0 octets et tu auras tous les fichiers de taille 0. Si tu as des fichiers persos à 0 octets, tu peux les effacer, c'est qu'il y a eu un problème sur le disque. Ensuite, Dans "type" tu mets dossier et dans "taille" vide 0 octets. Tu auras tousles dossier vides.
Attention, j'ai l'intuition que certains fichiers ou dossier à 0 octets ne doivent pas êtres effacées mais ce n'est qu'une intuition. Modifié par Super_GEGE le 23/09/2024 16:08 | |||||||
Astucien | Super_GEGE a écrit :
Que tu sois gentil, ça on le sait déjà , mais appliquer ton truc et ben ça marche pas (où je m'y prends mal) car en cliquant sur l'onglet, rien ne s'ouvre mis à part entrer et rechercher un nom de fichier.
| |||||||
Astucien | Solo44 Désolé de te contredire mais la solution de Super Gégé fonctionne parfaitement. Ca vient peut-être du fait que tu n'as pas sélectionné le ou les lecteurs avant de lancer la recherche. par exemple avec les fichiers : ------------------ Par contre, supprimer aveuglément n'importe quel fichier ou dossier 0 octet, ce n'est pas une intuition mais un fait, ca peut conduire à l'écran bleu ....
Modifié par Gallagh le 24/09/2024 09:43 | |||||||
Astucien | Effectivement, je pensais que le simple fait de se positionner sur l'onglet "Recherches" ouvrait un menu PopUp, mais non J'ai comme toi entré un type de recherche "taille vide", et là le menu de la recherche est apparu
Mais comme déjà indiqué je n'irai pas plus loin | |||||||
Maître astucien | Sur Win 10, je n'ai qu'à cliquer dans le menu de recherche pour avoir l'affichage de l'onglet de recherche. Sinon, il suffit de taper une lettre pour le faire apparaître. Bon nettoyage. 🙈 Modifié par Super_GEGE le 24/09/2024 12:49 | |||||||
Maître astucien | Si certains de vos fichiers personnels sont à 0ko, vous pouvez lancer une vérification du disque pour espérer les récupérer. Sinon poubelle et test crystaldiskinfo. Modifié par Super_GEGE le 24/09/2024 12:51 | |||||||
Astucien | Exact, un clic dans la zone recherche et ca ouvre l'onglet : | |||||||
Astucien | ça y est ... j'ai enfin compris merci à tous | |||||||
Maître astucien | Suffit et demander et que je me décide à répondre bien que je ne pense pas que ce soit la bonne chose à faire à l'exception de ses fichiers personnels. Modifié par Super_GEGE le 24/09/2024 16:56 | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|