web-dev-qa-db-fra.com

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

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

74
Black

Windows requiert normalement que les fichiers n'aient pas d'extension ou une extension d'au moins un caractère; ce n’est pas cool avec des extensions de longueur nulle, c’est-à-dire des noms de fichiers se terminant par .. Les dossiers peuvent aussi avoir des extensions. Windows ne laisse donc pas leurs noms se terminer par un .. Source, de l'article que DavidPostill a lié :

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

(J'insiste particulièrement sur moi.) Si vous essayez de terminer un fichier ou un répertoire portant un point, Windows suppose simplement que vous ne voulez pas d'extension et le supprime donc, même si vous le créez avec md dans une commande.

Zone de danger! Si vous souhaitez qu'un nom de dossier se termine par ., vous devez utiliser la séquence de substitution de nom brut magique de \\?\. Dans une invite de commande, md \\?\C:\path\to\container\._. créera en effet un dossier nommé ._., mais de nombreux programmes auront des problèmes avec cela, même Explorer:

 ._. problems

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

123
Ben N

Windows semble avoir un problème avec les points à la fin d'un nom de fichier? Pourquoi est-ce?

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 prendre en charge ces noms, Windows Shell et l'interface utilisateur ne le font pas.

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

Source Nommer des fichiers, des chemins et des espaces de noms

22
DavidPostill

Ce n'est pas un bug. Il est conçu pour éviter les problèmes de compatibilité.
Il s’agit d’un reliquat des anciens jours du DOS.

Les systèmes de fichiers FAT12 (disquette) et FAT16 (FAT16 antérieur à la prise en charge de nom de fichier long introduite dans Windows 95) ne contenaient que des noms de fichier stockés sur 11 octets:
8 octets pour le nom, 3 pour l'extension. La "période" entre le nom et l'extension n'était même pas stockée. C'était implicite et ajouté automatiquement à des fins d'affichage.
Les répertoires n’ont aucune extension. Au lieu de cela, les 3 octets de l'extension étaient remplis de caractères "$" (qui étaient illégaux dans de vrais noms).
Étant donné que Windows est toujours compatible avec cet explorateur et de nombreux autres composants de Windows, la période de fin disparaît en mode silencieux afin d'éviter de créer des problèmes de compatibilité.
Comme d'autres l'ont déjà indiqué, vous pouvez réellement gérer de tels dossiers en utilisant la sémantique RAW (le préfixe \\?\Avant le nom de chemin absolu).
En coulisse NTFS et les systèmes de fichiers réseau ne rencontrent aucun problème avec de tels fichiers et dossiers. Il s’agit simplement d’explorateur qui essaie d’empêcher l’utilisateur de créer quelque chose qui pourrait causer des problèmes à d’autres logiciels.

(En fait, il en reste d'autres:
Les noms de fichiers tels que COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON peuvent causer des problèmes similaires lorsque Explorer et de nombreuses autres parties de Windows sont confondus car ces noms sont des noms "réservés" qui datent aussi de l’ère DOS.)

17
Tonny

Le problème ici est que Windows (DOS) a autorisé les noms de fichiers 8.3 sur les systèmes de fichiers FAT. Signification, 8 caractères, suivis de a. suivi de trois personnages. Unix et Linux autorisent tous les caractères, à l'exception de/et\0.\0 est le terminateur de la chaîne de caractères C et/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 de noms de fichiers courts (8.3) en méta-données LFN (Long File Names). Si vous supprimiez vos fichiers du système d'exploitation Windows 95, il ne resterait plus que des fichiers portant des noms étranges sur le disque lors de votre prochaine installation de Windows 95. Par exemple, "Mes documents" pourrait s'appeler MYDOCU ~ 1 sur le disque. Évidemment, si vous perdez les métadonnées, vous ne pourrez pas les convertir facilement.

Le shell doit faire face à de nombreux incréments historiques qui traînent depuis les jours MS-DOS.

J'espère que cela t'aides

3
Ed Neville