75 votes

Pourquoi n'est-il pas possible de nommer un dossier "._." dans Windows 7 ?

Je viens de remarquer qu'il n'est pas possible de nommer un dossier ._. - il est nommé ._ à la place. Parfois, il disparaît juste après avoir été nommé, mais réapparaît après avoir rafraîchi la vue. Windows semble avoir un problème avec les points à la fin d'un nom de fichier - pourquoi ?

125voto

Ben N Points 38070

Windows exige normalement que les fichiers n'aient pas d'extension ou qu'ils aient une extension d'au moins un caractère ; il n'apprécie pas les extensions de longueur nulle, c'est-à-dire les noms de fichiers qui se terminent par . . Les dossiers peuvent également avoir des extensions, c'est pourquoi Windows ne permet pas que leurs noms se terminent par une extension. . . Source, de l'article que DavidPostill a cité :

Utilisez un point pour séparer le nom du fichier de base de l'extension dans le nom d'un fichier de base. le répertoire ou le fichier .

(C'est moi qui souligne.) Si vous essayez de terminer un fichier ou un répertoire nommé avec un point, Windows suppose que vous ne vouliez pas d'extension et le supprime donc, même si vous le créez avec md dans une invite de commande.

Zone de danger ! Si vous voulez absolument que le nom d'un dossier se termine par . vous devrez utiliser la séquence magique de remplacement des noms bruts, à savoir \\?\ . Dans une invite de commande, md \\?\C:\path\to\container\._. va en effet créer un dossier nommé ._. mais beaucoup de programmes auront des problèmes avec elle, même Explorer :

._. problems

Un tel répertoire ne peut être supprimé qu'avec rd suivi de son \\?\ ou renommé avec son nom court (8.3, dir /x ) nom.

22voto

DavidPostill Points 140654

Windows semble avoir un problème avec les points à la fin d'un nom de fichier ? Comment cela se fait-il ?

Ne terminez pas un nom de fichier ou de répertoire par un espace ou un point. Bien que le système de fichiers sous-jacent puisse supporter de tels noms, le Shell et l'interface utilisateur de Windows ne le font pas.

Le lien source ci-dessous donne plus de détails sur les règles de dénomination.

Source : Nommer les fichiers, les chemins et les espaces de noms

20voto

Tonny Points 26909

Ce n'est pas un bug. Il est conçu pour éviter les problèmes de compatibilité.
C'est un vestige de l'époque du DOS.

Les systèmes de fichiers FAT12 (disquette) et FAT16 (FAT16 avant la prise en charge des noms de fichiers longs introduite dans Windows 95) n'avaient que des noms de fichiers stockés sur 11 octets :
8 octets pour le nom, 3 pour l'extension. Le "point" entre le nom et l'extension n'était même pas stocké. Il était implicite et automatiquement ajouté à des fins d'affichage.
Les répertoires n'avaient pas du tout d'extensions. Au lieu de cela, les 3 octets de l'extension étaient remplis de caractères "$" (qui étaient illégaux dans les noms réels).
Parce que Windows est toujours compatible avec cet explorateur et de nombreux autres composants de Windows font disparaître silencieusement le point arrière pour éviter de créer des problèmes de compatibilité.
Comme d'autres l'ont dit, vous pouvez en fait gérer ces dossiers en utilisant la sémantique RAW ( \\ ?\ préfixe devant le nom de chemin absolu).
Dans les coulisses, NTFS et les systèmes de fichiers réseau n'ont aucun problème avec ces fichiers et dossiers. Il s'agit simplement d'un cas où Explorer essaie d'empêcher l'utilisateur de créer quelque chose qui pourrait poser des problèmes à d'autres logiciels.

(En fait, il y a aussi d'autres restes :
Les noms de fichiers tels que COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON peuvent causer des problèmes similaires où l'Explorateur et de nombreuses autres parties de Windows s'embrouillent parce que ces noms sont des noms "réservés" qui datent également de l'ère DOS).

3voto

Ed Neville Points 236

Le problème ici est que Windows (DOS) autorisait les noms de fichiers 8.3 sur les systèmes de fichiers FAT. Autrement dit, 8 caractères, suivis d'un . suivi de trois caractères. Unix et Linux autorisent tous les caractères, sauf / et \0. \0 est le terminateur de chaîne de caractères C, et / est le séparateur de répertoire. Tout le reste peut être utilisé.

Windows 95 a contourné ce problème en maintenant une base de données des noms de fichiers courts (8.3) aux méta-données des noms de fichiers longs (LFN). Si vous effacez vos fichiers d'OS Windows 95, vous vous retrouverez avec des fichiers aux noms étranges sur le disque lors de votre prochaine installation de Windows 95. Par exemple, "Mes documents" pourrait être nommé MYDOCU~1 sur le disque. Évidemment, si vous avez perdu les méta-données, vous ne pourrez pas les convertir facilement.

Le Shell doit faire face à de nombreux incréments historiques qui traînent depuis l'époque de MS-DOS.

J'espère que cela vous aidera

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X