Accueil

Infos-news

infos-web

Infos-logiciels

Multimedia

Papier peint

Utilitaires

Liens

Livredor

Courrier

Astuces pour effacer fichier/dossier récalcitrant (Réagir sur le sujet)

Préambule : ce sujet n'a pas la prétention de résoudre tous les problèmes de ce genre. Il s'avère que certains fichiers sont tenaces et que des OS ne lâchent pas facilement le morceau, en particulier si on a un fichier qui a été créé avec un autre OS non-MS et qui porte un nom réservé comme LPT1, COM1, AUX, CON (ce n'est pas une insulte  ). Si on a un disque en NTFS, ça peut aussi compliquer les choses. Ce sont parfois des bugs qui empêchent l'effacement (voir les fichiers .avi sous XP : http://a.vouillon.free.fr/faq-winxp.htm#115 ).
Mais je pense que si vous essayez les méthodes décrites, il y a de fortes chances que vous soyez quitte de votre fichier.

Je vois souvent qu'on propose comme solution de vérifier les attributs du fichier (lecture seule, système). Sachez qu'en aucun cas, ce n'est un obstacle à sa suppression ! La seule chose, c'est que Windows va vous prévenir que vous allez supprimer un fichier caché/système/en lecture seule. Ce n'est donc pas le fait de décocher les cases qui résoudra le problème.
Si vous essayez de supprimer un dossier et que vous avez un message d'erreur, ce n'est probablement pas le dossier lui-même qui est le problème mais un ou plusieurs fichiers du dossier. La solution consiste à effacer les fichiers de ce dossier un par un jusqu'au moment où on tombe sur celui qui pose problème.

Le mode sans échec permet déjà de résoudre pas mal de cas, il est probable que le fichier bloqué en temps normal ne le soit pas en mode sans échec. Pour démarrer celui-ci, il y a plusieurs manières en fonction de l'OS, par exemple, maintenir la touche CTRL enfoncée pendant que le PC démarre. Ensuite, un menu apparaît, permettant de le choisir. L'aide de Windows vous aidera, tapez simplement "mode sans échec" à l'onglet "index". Voici ce que ça dit chez moi :

Cliquez sur Démarrer, puis sur Arrêter. Cliquez sur Redémarrer, sur OK, puis appuyez sur la touche CTRL en la maintenant enfoncée jusqu'à ce que le Menu de démarrage de Microsoft Windows 98 apparaisse.
Sur certaines machines, vous pouvez utiliser la touche F8 au lieu de CTRL pour afficher le Menu de démarrage de Microsoft Windows 98.


La solution la plus simple pour effacer un fichier est d'utiliser Explorer. Quoique. Personnellement, je ne fais aucune confiance en ce programme car MS a pris pour habitude de ne pas montrer le contenu REEL des répertoires depuis la sortie de Win95 et ça s'aggrave avec XP. Je conseille d'utiliser Total Commander (TC), le meilleur gestionnaire de fichiers, multilingue, aucune crasse dans la BdR, shareware sans limitation.
A télécharger ici : http://www.ghisler.com/accueil.htm

Que vous utilisiez Explorer, Total Commander ou un autre gestionnaire de fichiers, il vaut mieux s'assurer que l'option "afficher fichiers cachés et système" soit cochée. Allez dans le répertoire où se trouve le fichier en question. (voir ci-dessous ce qui est à faire si c'est un programme en cours d'exécution qui doit être supprimé). Essayez de renommer le fichier ou de le déplacer dans un autre répertoire. Si jamais le répertoire lui-même est à liquider également mais qu'il contient un fichier récalcitrant, renommez le répertoire. C'est l'astuce que je préconise pour liquider les index.dat, voir mon sujet dans ma signature (Historique IE). En général, ça ne se pose pas de problème. Ce n'est pas pour ça que le fichier est supprimable, il faut en effet redémarrer Windows afin que le processus qui "locke" le fichier ne le retrouve plus.

S'il n'est pas possible de renommer le répertoire (parce qu'il contient d'autres fichiers à conserver, par exemple), il faut alors essayer dans une boîte DOS.
- Sous 9X/ME, ouvrez une boîte DOS et allez dans le répertoire en question. Si jamais vous ne vous en sortez pas avec les CD (change directory), utilisez Total Commander qui a une fonction ouvrant une boîte DOS dans le répertoire courant via le menu "Commandes" -> "Fenêtre DOS". Essayez maintenant en tapant DEL "le nom de votre fichier". Si le nom contient des espaces, vous devrez entourer le nom de guillemets.

- Sous XP/2K, faites Démarrer -> Exécuter -> cmd
Dans la boîte qui s'ouvre, faites DEL "le nom du fichier". Assurez-vous que vous avez les droits sur le fichier, ça peut être une des raisons de l'impossibilité de l'effacement. Pour effacer un répertoire, faire RD répertoire /S

Une autre astuce pour supprimer un fichier sous XP, c'est en anglais.

http://www.dougknox.com/xp/tips/xp_undeletable_file.htm

Voici la traduction :

- Lancer une ligne de commande (Démarrer -> Exécuter -> cmd). Laisser la fenêtre ouverte (pas celle de la pièce où vous êtes, celle de la ligne de commande ).
- Arrêter tous les programmes.
- Ouvrir le gestionnaire de tâches (par CTRL+alt+suppr) -> onglet Processus.
- Sélectionner Explorer.exe .
- Appuyer sur le bouton "Terminer le processus".
- Confirmer la fin du processus dans la fenêtre qui s'ouvre.
- Laisser la fenêtre du gestionnaire de tâches ouverte.
- Retourner dans la fenêtre de la ligne de commande et aller dans le répertoire qui contient le fichier récalcitrant. Ça se fait via une commande cd "le nom du répertoire". Si c'est un répertoire qui est "profond", c'est-à-dire qu'il est un sous-sous-répertoire, faites le cd en plusieurs fois, par exemple, "cd \program files" (notez les guillemets à cause de l'espace), puis, cd "Microsoft Office", puis cd Modèles, etc.
- Une fois que vous êtes dans le répertoire avec le fichier à supprimer, vous pouvez taper dir "le nom du fichier", il devrait apparaître. Si vous ne le voyez pas, c'est qu'il a peut-être un attribut système ou caché ou alors, vous n'êtes pas dans le bon répertoire.
- Ensuite, taper del "le nom du fichier"
- Retourner dans le gestionnaire de tâches
- Menu Fichier -> Nouvelle tâche, taper EXPLORER dans le champ.
- Fermer le gestionnaire de tâches

Ce procédé ne fonctionnera pas pour toutes les situations mais il est encore relativement simple à essayer.

Pour les fichiers contenant un caractère exotique, voici ce que propose Vouillon (voir lien au début du sujet)

* Il y a aussi l'astuce du codage du nom de fichier/répertoire.
Symptôme: Vous ne pouvez ni supprimer, ni renommer le fichier/répertoire.
En insérant un caractère codé qui produit un espace à l'affichage, XP peut être trompé et la plupart des utilitaires ne fonctionnent pas. Un moyen simple consiste à travailler en invite de commandes avec le nom de fichier court. La commande 'dir /X' affiche les noms courts des fichiers/répertoires.


En parcourant un autre forum, je suis tombé sur un cas spécifique à XP. Un utilisateur ne parvenait pas à supprimer un dossier qu'il venait de créer via un logiciel de transfert entre un appareil photo numérique et son PC. La solution est simple mais radicale, il a restauré son système a une date antérieure au problème, avant que le répertoire ne soit créé.
C'est donc une solution à envisager pour XP/ME, restaurer le système à une date antérieure, pour autant qu'on mesure toutes les conséquences de cette restauration. C'est peut-être la dernière solution à envisager quand toutes les autres ont échoué.
J'ai déjà constaté que certaines personnes disent avoir dû redémarrer XP plusieurs fois pour résoudre un problème. C'est aussi une possibilité à prendre en compte pour se débarrasser de fichier(s)/dossier(s) récalcitrants.

- Il y a encore d'autres astuces : lancer le bloc-notes et ouvrir n'importe quel fichier texte. Puis, vous faites Fichier -> "Enregistrer sous..." et comme nom de fichier, vous indiquez le fameux fichier bloqué. Ainsi, son contenu est remplacé par autre chose et ça peut permettre l'effacement.

Cas particulier : le fichier contient un caractère spécial qui empêche qu'on tape son nom.

Un petit coup de Scandiskw pourrait régler le problème, j'ai eu le cas avec un fichier dont le nom contenait des caractères très spéciaux. Impossible de le supprimer sous Win, en DOS, etc., même la suppression du répertoire où il se trouvait ne donnait rien. Finalement, Scandiskw a résolu le problème car il analyse les répertoires à la recherche de fichiers au contenu ou au nom corrompus. Il propose alors d'effacer le fichier, ce qui règle le problème.
J'ai déjà réussi à supprimer un fichier en cours d'utilisation en lançant un defrag ! Il s'agissait du fichier journal créé lors de la connexion à Internet et qui indique les caractères envoyés par le modem, le nombre de minutes de connexion, etc. Quand je me déconnecte, je supprime ce fichier mais pour une raison mystérieuse, il est parfois "locked" alors qu'il n'y a plus aucun programme en mémoire à part Explorer et SysTray. Il suffit de redémarrer Windows pour l'effacer. Un peu par hasard, je suis tombé sur une solution ne nécessitant pas le redémarrage : la défragmentation.
Voici comment faire : lancer Explorer (ou TC), allez dans le répertoire avec le fichier récalcitrant. Puis, lancer la défragmentation (Démarrer -> Exécuter -> defrag). Dès qu'elle a commencé, retournez dans le gestionnaire de fichiers et essayez de supprimer le fichier tout en laissant tourner la défragmentation. Dans le cas précis que je cite, ça marche mais je ne garantis pas que ce sera le cas pour d'autres fichiers.
Dans le cas où le fichier a un nom à rallonge que vous n'arrivez pas à supprimer, TC vient encore une fois à votre secours avec une option intéressante mais dangereuse, à n'utiliser donc que temporairement. Il s'agit de l'option "Utiliser les noms longs" qui est bien sûr cochée par défaut. Si vous la décochez temporairement, votre nom à rallonge va devenir un nom en 8 caractères plus (éventuellement) 3 d'extension et vous pourrez sans doute le supprimer. N'oubliez pas de cocher la case à nouveau après la manip. Elle se trouve dans le menu "Options" -> "Configuration" -> onglet "Opération" -> cadre "spécifique de Win95/NT".
On pourra aussi le traiter avec CopyLock dont je parle plus loin.


Si c'est un programme que vous voulez effacer, c'est impossible s'il tourne car il se trouve en mémoire. En fonction du système d'exploitation, il faut vérifier s'il tourne et l'arrêter.

Pour Win9x/ME, utiliser Wintop de MS, à télécharger ici :

http://www.autourdupc.com/Logiciel/Utils/Softs/W95KRNLTOYS.EXE

ou ici : http://www.clubic.com/t/gen/fl1967.html (55 KB)

Pour 2K/XP, CTRL+ALT+DEL, puis onglet "processus".
Quand vous avez repéré le programme, sélectionnez-le et cliquer sur "fin de tâche". Normalement, il devrait s'arrêter. Il arrive en effet que certains programmes restent bloqués en mémoire, il faut parfois utiliser d'autres méthodes pour "tuer" une tâche. Wintop a une option pour le faire, sinon, différents logiciels le permettent comme EndItAll ou TaskInfo.
Si le programme en question était un virus ou un spyware, ce n'est peut-être pas suffisant de l'effacer une fois qu'on l'a éjecté de la mémoire. Il vaudrait mieux utiliser la méthode appropriée (désinstaller, faire tourner l'antivirus, etc.) .
Si vous avez des doutes sur un programme, j'ai fait un post permettant d'identifier plus de 2 mille programmes dont des spyware et des virus :

http://213.246.36.243/archives/70050-1.htm


Il existe un autre moyen d'identifier quel est le processus qui "locke" le fichier. Il s'agit d'un freeware qui s'appelle Process Explorer qui existe en 2 versions, pour 9X/ME et pour 2K/XP/NT.

http://www.sysinternals.com/files/procexp9x.zip (77 Kb) pour 9x/ME

http://www.sysinternals.com/files/procexpnt.zip (77 Kb) pour NT/2K



Comme vous le voyez, les programmes en cours d'exécution sont visibles dans la fenêtre du dessus. Celle du dessous montre les "handle", c'est-à-dire ce qui est utilisé comme ressources par le programme. Par ressources, j'entends un ensemble de choses comme un fichier, une dll, un "service" système, etc. Ce qui nous intéresse, ce sont les "File". Cliquez sur la colonne "Type" et vous verrez alors les "File" utilisés par un programme. Si vous ne voyez pas de colonne "Type", faites CTRL+H
Pour trouver un fichier en cours d'utilisation et ainsi le ou (les) programme(s) qui locke ce fichier, faites CTRL+F (ou cliquez sur les jumelles). Ensuite, dans la boîte qui s'ouvre, tapez le nom du fichier (même partiellement) et faites Enter. Cela devrait faire apparaître les processus qui utilisent le fichier. Faites l'essai avec les fameux index.dat, tapez index.dat dans le champ et vous verrez les instances d'Explorer qui bloquent les différents index.dat. Si vous ne trouvez pas le programme coupable qui bloque votre fichier, il faut passer à autre chose.

----------

Si toutes ces tentatives ont échoué et que vous voulez malgré tout essayer sans l'aide d'un logiciel, il y a une méthode pour Win9x/ME qui marche très bien.

Jean-Claude Bellamy en parle ici : http://www.bellamyjc.net/fr/systeme.html#replace

C'est possible en utilisant un programme prévu lors des installations, par exemple. C'est le programme Wininit.exe qui affiche le message que vous avez sûrement déjà vu au démarrage de Windows :

"Veuillez patienter pendant la mise à jour de vos fichiers de configuration... Cela peut prendre plusieurs minutes"

Vous pouvez très facilement simuler cette opération dans le but de supprimer un fichier.
Allez dans le répertoire C:\windows (ou le nom qu'il porte chez vous). Vérifiez la présence d'un fichier WinInit.ini ou .bak. S'il y a un WinInit.ini, vous pouvez voir son contenu avec le bloc-notes. Au prochain redémarrage de Windows, les opérations de suppression et de changement de nom seront effectuées. S'il y a un WinInit.bak, ça veut dire que les opérations ont déjà eu lieu, c'est WinInit.exe qui change le .ini en .bak quand il a fini de traiter le fichier, afin qu'au prochain redémarrage, rien ne se passe.
Si aucun des deux fichiers n'existe, créez-en un s'appelant WinInit.ini avec le bloc-notes.
Ce fichier doit avoir les caractères suivants au début :

[rename]

avec les crochets !

puis, on peut mettre NUL= suivi du nom du fichier à supprimer (ou DIRNUL= pour un dossier). Exemple,

NUL=C:\Windows\Temp\Test.txt
DIRNUL=C:\Windows\Temp

Voici donc le contenu du fichier Wininit.ini pour effacer le fichier test.txt dans le répertoire Windows\Temp :

[rename]
NUL=C:\Windows\Temp\Test.txt

Vous sauvez le fichier et vous redémarrez Windows afin que l'opération se passe. Comme l'explique JC Bellamy, le programme WinInit.exe est un des premiers à être lancé avant les autres, il ne fait son boulot que si un fichier WinInit.ini est présent.

http://www.bellamyjc.net/fr/windows9x.html#wininit


Solution de suppression ou de remplacement pour tous les OS

Il s'agit d'un petit logiciel (100KB) nommé CopyLock, je pense que c'est un Français qui l'a écrit, il s'appelle Noël Danjou.
Il nécessite OLEACC.dll, une dll qui n'était pas installée sur mon Win98 mais que j'ai trouvée sur le CD-ROM Win98, à placer dans Windows\System.

http://www.noeld.com/download/copylock.zip

http://noeld.com/download.htm#CopyLock



Comme vous pouvez le constater, l'interface est très simple. D'après le Help (en anglais), on peut amener un fichier par glisser/déposer mais j'ai un message d'erreur quand j'essaie.

- Si on veut supprimer un fichier, on clique sur "Add". Un sous-menu apparaît sous le bouton avec 2 options :

Files to replace
Files to delete

Choisir "Files to delete". Ensuite, parcourir la liste des répertoires jusqu'au fichier incriminé et le sélectionner, puis cliquer sur "Add". On peut faire de même pour plusieurs fichiers. Le nom du fichier apparaît maintenant dans la colonne "Source" et il n'y a rien dans la Destination.
Il suffit alors de cliquer sur "Replace" (je trouve que le nom est un peu ambigu, mais bon). Si le fichier n'est pas bloqué, la suppression est immédiate. Sinon, un message dit ceci "the system needs to restart to complete the operation. Do you want to restart now ?". Vous pouvez répondre non si vous ne voulez pas redémarrer directement. Le fichier sera supprimé au prochain redémarrage et la manière est différente en fonction de l'OS, pour 9X/ME, c'est le Wininit décrit ci-dessus qui est utilisé. Je ne connais pas la technique utilisée pour NT/XP/2K.
Si un volontaire pouvait tester sous XP/2K avec l'aide d'un mouchard (voir mon sujet dans ma signature), ce serait bien d'indiquer les changements faits par CopyLock au niveau de la BdR.

- Pour remplacer un fichier, on clique sur "Add" puis sur Files to replace. On choisit le fichier qu'on veut remplacer et ensuite, le répertoire de destination, puis, on clique sur Replace. Il ne s'agit pas d'un "move" car le fichier d'origine existe toujours après le replace. Si un fichier du même nom existe dans le répertoire de destination, il est remplacé.

Il y a aussi le freeware (en anglais) MoveOnBoot de Gibin, à télécharger ici :

http://www.gibinsoft.net/gipoutils/bin/moveonb.zip 320 KB

Pour l'installer, il faut avoir MSIexec de MS, il s'agit d'un module d'installation propre à MS, il gère les fichiers à extension .msi Pour savoir si vous l'avez, il suffit de vérifier la présence du programme msiexec.exe dans le répertoire Windows\System. Ou alors, un clic droit sur le fichier moveonb.msi qui est dans le zip, vous devriez voir différentes options typiques d'un fichier .msi comme "réparer", on peut aussi regarder les informations concernant le fichier. Si vous ne l'avez pas, voici où le télécharger :

Pour 9x/ME

http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe 1.6 MB

Pour NT/2K

http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe 1.6 MB

Il fonctionne suivant le même principe que CopyLock (avec le Wininit.ini sous 9x) mais ne permet apparemment que de traiter un fichier à la fois.
L'anglais n'est pas un problème car il n'y a pas 36 options, on clique sur "Suivant" au 1er écran, ensuite, on peut introduire le nom du fichier, le drag and drop fonctionne avec celui-ci. On peut apparemment amener un dossier par drag and drop mais pas en sélectionner un via la boîte de dialogue. Quand le fichier est choisi, on clique sur "Suivant" qui affiche un écran avec 3 options :

1) Copy file
2) Rename file
3) Delete file

Si on choisit copy ou rename, le programme demande alors un nom de répertoire ou de fichier de destination. Si on choisit delete, le fichier sera détruit au prochain boot. Un dernier écran de confirmation affiche l'opération qui se fera "copy" ou "delete" ou "rename". Si on clique sur Start, on valide l'opération (on peut encore cliquer sur précédent pour revenir en arrière). Quand c'est fini, on clique sur Terminer et au prochain boot, l'opération se fait. Il ne propose apparemment pas de redémarrer, contrairement à CopyLock.
Il rajoute un onglet aux propriétés de tous les fichiers et le menu contextuel de chaque fichier se voit affubler d'une option "Delete this file on the next boot". Dommage qu'il n'ait pas laissé le choix à l'installation, je n'aime pas ces softs qui s'installent un peu partout sans prévenir.

Si votre fichier n'est toujours pas supprimé ou renommé, il reste des possibilités sous NT/XP/2K, il faut utiliser un programme dédié à cette tâche, il en existe plusieurs qui sont freeware.

C'est le cas de MOVEEX et de INUSE, ce dernier étant un produit MS.

http://www.bellamyjc.net/download/moveex.exe 40 KB

http://download.microsoft.com/download/winntsrv40/Utility/1.3/NT4/EN-US/inuse.exe 790 KB

ou

http://download.microsoft.com/download/win2000platform/inuse/1.0/NT5/EN-US/inuse.exe

En fait, ces outils sont prévus pour renommer des fichiers en cours d'utilisation mais on peut aussi s'en servir pour renommer le fichier récalcitrant et l'effacer au prochain démarrage.

Pour remplacer un fichier en cours d'utilisation, on fait comme suit (je plagie Bellamy )

Dans une fenêtre de commande (ou depuis le menu Démarrer/Exécuter), taper la commande suivante :

moveex c:\Temp\Nouvelle_gina.dll c:\winnt\system32\Nwgina.dll

Déplace la librairie c:\Temp\Nouvelle_gina.dll dans le répertoire c:\winnt\system32 et la renomme en nwgina.dll .
S'il existe déjà un fichier de ce nom dans c:\winnt\system32, il sera remplacé par le nouveau.


Pour Inuse, on fait

c:\Tools\inuse.exe \\server\updates\prodmod.dll c:\program files\prodsys\prodmod.dll /y

pour autant que Inuse soit dans le répertoire c:\Tools évidemment. Le premier fichier est le source, le deuxième est celui qui est en cours d'utilisation et qui sera remplacé.

Ces deux programmes agissent dans le registre de la façon suivante (dixit Bellamy)

Il suffit d'utiliser dans un programme la fonction "MoveFileEx" (dans kernel32.dll), avec le commutateur MOVEFILE_DELAY_UNTIL_REBOOT. Cette fonction, une fois exécutée, se contente de modifier ou créer dans la clef :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager
l'entrée PendingFileRenameOperation (de type REG_MULTI_SZ), laquelle va contenir les opérations à effectuer lors du redémarrage suivant.

Pour annuler une opération de renommage avant que le système soit redémarré, il suffit de modifier ou supprimer l'entrée PendingFileRenameOperation dans la clef HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager


Ce n'est pas dit explicitement dans la description de ces 2 programmes mais je pense qu'on peut les utiliser pour supprimer un fichier. On va donc faire croire à Windows qu'on veut remplacer un fichier par un autre. Apparemment, Inuse a l'air de travailler uniquement avec des fichiers de même nom alors que moveex est plus souple. On va prendre l'exemple avec un même nom.

Nous avons donc notre fichier bloqué (C:\Windows\Temp\Test.txt).

Attention, ces deux outils ne permettent pas de renommer d'un disque à l'autre.

Dans une fenêtre de commande (ou depuis le menu Démarrer/Exécuter), taper la commande suivante :

moveex C:\Windows\Temp\Test.txt c:\Test.txt

En fait, le nom de fichier en deuxième position pourrait être différent. Attention, s'il y a déjà un test.txt dans C:\, il est écrasé. Une fois la commande tapée, on peut redémarrer Windows et normalement, on peut supprimer le fichier c:\Test.txt

Je ne pense pas que Inuse puisse faire cette dernière opération, je veux dire dans le cas où le fichier de destination n'existe pas.
Nouvel appel aux testeurs, le but est donc d'essayer Inuse avec un fichier de destination inexistant.

Voilà, vous avez différentes solutions, vous pouvez bien sûr commenter ces méthodes, si elles marchent ou pas. Si vous connaissez d'autres astuces et que vous les avez testées, vous pouvez aussi les indiquer. Merci de spécifier à chaque fois la méthode utilisée ainsi que la version de l'OS, ce sera plus clair.


-------------------------
Pierre.

Accueil

Infos-news

infos-web

Infos-logiciels

Multimedia

Papier peint

Utilitaires

Liens

Livredor

Courrier