Il y a environ un mois, j'ai décompressé la source Linux dans un dossier de Cygwin (j'étais curieux de savoir si cela se compilerait avec MinGW car mon autre ordinateur exécutant Linux est un Sempron monocœur lent). J'ai essayé de le supprimer, mais il reste 1 fichier et il ne sera pas supprimé ...
Cygwin réside C:\cygwin
et j'ai extrait la source C:\cygwin\src\linux-3.7.1
. Il n'a pas compilé ... J'ai donc essayé de supprimer le dossier. Ça allait bien, jusqu'à la fin, quand j'ai réalisé que tous les fichiers n'étaient pas supprimés. J'ai essayé de supprimer à linux-3.7.1
nouveau le dossier et une erreur est apparue:
J'ai ouvert le dossier et j'ai découvert qu'il restait 1 fichier source:, aux.c
qui se trouve dans C:\cygwin\src\linux-3.7.1\drivers\gpu\drm\nouveau\core\subdev\i2c\aux.c
.
Ça ne sera pas:
- Supprimer
- Ouvert
- Bouge toi
Les propriétés générales:
Propriétés de sécurité:
Comment supprimer ce fichier?
Réponses:
Essayez ceci à partir d'une invite de commande (élevée):
la source
aux.c
est supprimé, mais maintenant le dossier `src` est apparemment utilisé lorsque j'essaye de le supprimerrd /s /q \\?\C:\cygwin\src
- être vous aidera.Le problème que vous avez rencontré est dû aux anciennes réservations DOS.
Les fichiers de la liste ci-dessous ont une signification particulière. Une partie de cela est toujours présente dans les versions Windows modernes:
CON, PRN, AUX , CLOCK $, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 et LPT9.
Le moyen le plus simple de les supprimer est de démarrer un système d'exploitation qui ne traite pas ces noms de fichiers comme spéciaux. (par exemple, démarrez n'importe quel liveCD non Windows).
[modifier] Tests effectués sur win7-x86 ultime:
Création d'un fichier de test simple:
Vérification du contenu:
Maintenant avec aux .c
Il semble que certaines parties des fenêtres soient toujours rétrocompatibles.
la source
aux.c
copy con aux.c
sur win7 et ça a échoué. (copy con test.c
fonctionne).Dans ce cas, il s'agissait évidemment de la signification particulière de l'
aux
héritage de l'époque DOS , comme Hennes l'a souligné correctement. Cependant, pour les lecteurs trébuchant à ce sujet à l'avenir, je voudrais ajouter un autre cas possible où ce comportement peut être vu.C'est à ce moment qu'un fichier a été créé avec un point de fin. Il existe également des cas plus exotiques. Mais
filename.ext.
serait un tel nom de fichier et ne pourrait normalement pas être supprimé du sous-système Win32. C'est là que l'astuce de Karan entre en jeu. Il utilise un nom qui avant d'être passé à la couche sous le sous-système Win32 sera changé de sa\\?\C:\...
forme en "natif" (c'est aussi ainsi que les pilotes de filtrage du système de fichiers le voient) forme\??\C:\...
. Alors que, selon la version de Windows, il peut s'agir d'un soi-disant répertoire d'objets (utilisez WinObj de Sysinternals / Microsoft pour jeter un œil dans l'espace de noms du gestionnaire d'objets) ou d'un lien symbolique (à ne pas confondre avec l'entité de même nom dans NTFS depuis Vista). vers un autre répertoire d'objets tel que\DosDevices
. Ce dernier n'est qu'un nom et décrit la partie de l'espace de noms du gestionnaire d'objets visible par défaut par les processus Win32. Pour plus de détails, consultez la série de livres Windows Internals ou lisez plus sur l'analyse de chemins, en particulier sur Project Zero de Google (The Definitive Guide on Win32 to NT Path Conversion) . En particulier, vous souhaiterez peut-être faire attention à la différence entre les espaces de noms de fichiers Win32 et les espaces de noms de périphériques Win32 .Maintenant, comment un tel fichier peut-il être créé en premier lieu? Il existe plusieurs possibilités.
\\?\X:
préfixe pour les noms de chemin afin d'étendre la longueur de chemin disponible de 260 caractères à environ 32767 caractères (voir référence 1!) a créé le fichier en premier lieu, évitant ainsi certaines limitations du sous-système Win32.Les deux derniers points font également allusion à l'un des remèdes mentionnés: démarrer un CD live non Windows et supprimer le ou les fichiers.
Le problème peut en fait être comparé au cas où un ancien programme Win32 non Unicode est confronté à des noms de fichiers provenant de plusieurs pages de codes. Souvent, il ne sera pas en mesure de "trouver" certains d'entre eux, car chaque page de code ANSI respective ne peut contenir que 256 caractères, tandis que UTF-16 (pas son sous-ensemble UCS-2, cependant) peut théoriquement coder une quantité pratiquement illimitée de points de code (lire le sujet sur unicode.org et Wikipedia ).
J'espère que cela vous aidera à mieux comprendre les problèmes sous-jacents. Je ne voulais pas modifier cette longue réponse dans l'une des autres réponses, bien qu'elle ne fasse que les compléter. Les autres réponses sont parfaitement valables sans celle-ci.
Note de bas de page 1: le nombre maximal de caractères dans le chemin n'est pas absolu car un chemin proche du maximum absolu (32 767 caractères) peut très bien être développé par le gestionnaire d'objets et les filtres du système de fichiers ou les systèmes de fichiers eux-mêmes (par exemple, les points d'analyse) .
la source
J'ai eu ce problème et j'étais très frustré, rien n'a fonctionné. Ensuite, j'ai utilisé un CD Linux Ubuntu. Démarré à partir du CD-ROM, est passé en mode démo, a accédé à l'emplacement des fichiers problématiques et les a simplement supprimés. Cela fonctionne comme un rêve.
la source