2008-09-23 9 views

Répondre

14

De: http://www.grouplogic.com/knowledge/index.cfm/fuseaction/view_Info/docID/111.

Les caractères suivants ne sont pas valides en tant que noms de fichiers ou de dossiers sur Windows en utilisant NTFS: /?<>\:*|" et tout caractère que vous pouvez taper avec la touche Ctrl. En plus des caractères illégaux ci-dessus, le signe d'insertion ^ n'est pas non plus autorisé sous les systèmes d'exploitation Windows utilisant le système de fichiers FAT.

Sous Windows en utilisant le système de fichiers FAT, les noms de fichiers et de dossiers peuvent comporter jusqu'à 255 caractères.

Sous Windows, le nom de fichier et de dossier du système de fichiers NTFS peut comporter jusqu'à 256 caractères.

Sous la fenêtre, la longueur d'un chemin complet sous les deux systèmes est de 260 caractères.

En plus de ces caractères, les conventions suivantes sont également illégales:

  • Placer un espace à la fin du nom
  • Placer une période, à la fin du nom

Les noms de fichiers suivants sont également réservés sous Windows:

  • com1,
  • com2,
  • ...
  • com9,
  • lpt1,
  • lpt2,
  • ...
  • lpt9,
  • con,
  • nul,
  • prn
+5

aux est pas un nom de fichier autorisé dans Windows selon l'article Adam mentionne –

+1

Je trouve la légitimité de cet article discutable, car il déclare que sur Mac OS X," Fichier et les noms de dossier ne sont pas autorisés à commencer par un point '.' ", ce qui est absolument faux – Chris

+1

Ce ne sont pas seulement les noms de fichiers que vous avez réservés sous Windows, c'est l'un de ceux les noms d'appareils suivis de toute extension, par ex. 'COM5.foo' et' COM5.bar' sont illégaux. –

2

Eh bien, pour MSDOS/Windows, NUL, PRN, LPT < n> et CON. Ils provoquent même des problèmes en cas d'utilisation avec une extension: « NUL.TXT »

+1

Ran dans ce non-sens aujourd'hui. Je ne sais pas pourquoi ces noms de fichiers sont illégaux si vous leur ajoutez des extensions> :( –

+0

Je pense que ce sont des programmes comme LINK.EXE (rappelez-vous cela?) Qui accepterait un nom de fichier de base, puis générer trois fichiers différents avec une extension différente. pourrait juste taper "nul" ou "prn", et le programme pourrait ajouter aveuglément l'extension, et les choses fonctionneraient encore –

4

Un Gotcha Unix difficile quand vous ne savez pas:

fichiers qui commencent avec - ou - sont légaux, mais une douleur dans le cul pour travailler avec, autant d'outils de ligne de commande pensent que vous leur fournissez des options.

Plusieurs de ces outils ont un marqueur spécial « - » pour signaler la fin des options suivantes:

gzip -9vf -- -mydashedfilename 
1

À moins que vous touchez des répertoires spéciaux, les seuls noms illégaux sur Linux sont « . » et '..'. Tout autre nom est possible, bien que l'accès à certains d'entre eux à partir du shell nécessite l'utilisation de séquences d'échappement. Comme le dit Vinko Vrsalovic, les fichiers commençant par '-' et '--' sont une douleur du shell, car ces séquences de caractères sont interprétées par l'application, pas par le shell.

+0

Si cela est vrai, comment créer un nom de fichier avec une barre oblique? – Malvineous

+0

Yep, '/'n'est pas valide dans un nom de fichier sur un type de système de fichiers – Basic

4

Comme d'autres l'ont dit, les noms de périphériques COM1 ne sont pas possibles en tant que noms de fichiers sous Windows car ce sont des périphériques réservés.

Cependant, il existe une méthode d'échappement pour créer et accéder à des fichiers avec ces noms réservés, par exemple, cette commande va rediriger la sortie de la commande ver dans un fichier appelé COM1:

ver > "\\?\C:\Users\username\COM1" 

Maintenant, vous avoir un fichier appelé COM1 que 99% des programmes ne pourront pas ouvrir, et gèlera probablement si vous essayez d'accéder.

Here's the Microsoft article explique comment fonctionne cet "espace de noms de fichiers". Fondamentalement, il dit à Windows de ne pas effectuer de traitement de chaîne sur le texte et de le passer directement au système de fichiers. Cette astuce peut également être utilisée pour travailler avec des chemins de plus de 260 caractères.

+0

J'ai essayé de supprimer à nouveau le fichier créé, mais del se fige en ligne de commande ... Edit: Je ne peux pas tuer l'événement cmd avec le gestionnaire de tâches ou hacker de processus ... ce qui se passe ici? –

+0

Fonctionne bien pour moi. Vous ne pouvez pas 'del COM1' parce que bien sûr cela va essayer d'accéder au port série au lieu du fichier et provoquer le verrouillage du processus, en attendant une réponse du port série lui-même (exactement la raison pour laquelle les noms de fichiers sont réservés Si vous avez utilisé la méthode escape dans ma réponse pour créer le fichier, alors vous devrez l'utiliser pour le supprimer: 'del '\\? \ C: \ Users \ nom d'utilisateur \ COM1 "' – Malvineous

+0

Bien sûr, j'ai utilisé le même \\? \ Path à supprimer. Je me demande juste pourquoi mon cmd s'est figé. J'ai abandonné et réinstallé mon système d'exploitation complet. Cela l'a arrangé assez vite. –