Lorsque j'essaie d'enregistrer un fichier, si j'utilise des caractères spéciaux dans le nom (tels que deux points, un point d'interrogation ou un point d'exclamation) dans Windows, je reçois un message indiquant que le nom de fichier n'est pas valide.
Pourquoi donc?
windows
special-characters
user284989
la source
la source
Réponses:
Il y a plusieurs caractères qui ont une signification particulière pour Windows (et pour DOS, d'où la plupart des caractères sont originaires)
de MSDN :
/
est un commutateur (et également un séparateur de répertoires).\
est un séparateur de répertoire.:
est un désignateur de lecteur.*
et?
sont des caractères génériques utilisés dans la recherche."
est un moyen d'autoriser les espaces dans les paramètres.<
et>
sont une redirection qui permet à l’entrée et à la sortie d’un programme de provenir d’autre chose que l’écran / le clavier.|
est un canal qui permet d'utiliser la sortie d'un programme comme entrée pour le suivant.la source
\
?
*
et"
sont les seuls vraiment nécessaires dans la syntaxe actuelle, car les autres caractères ne sont utiles qu'en dehors des guillemets. L'exception est: qui n'est utile qu'en tant que deuxième caractère, qui pourrait être interdit tout en le permettant ailleurs. En d'autres termes, aucun fichier nomméA:A letter's story.txt
, mais aucun problème avec un fichier nomméSarah: My favorite cat.txt
<>"
sont des caractères génériques réservés. Windows les utilise pour implémenter la sémantique complexe pour DOS*?.
lors de la traduction en NT natif, qui a une sémantique simple pour*?.
. Les six caractères génériques sont réservés car Windows implémente la correspondance des caractères génériques dans le système de fichiers lui-même, c'est-à-dire directement dans l'NtQueryDirectoryFile
appel système, sans mécanisme d'échappement. Sous Unix, les caractères génériques sont implémentés au niveau de l'application, généralement par un shell qui prend en charge leur échappement.:
est généralement réservé dans les noms de fichiers, mais pas dans les chemins de fichiers. Il est utilisé pour les noms de périphériques et comme délimiteur pour les flux de fichiers (par exemple, "nom de fichier: nom de flux: type de flux"). En outre, certains systèmes de fichiers tels que le VirtualBox permet partagé le dossier système de fichiers:
,|
et des caractères de contrôle ASCII (1-31) dans les noms de fichiers, mais ils sont réservés dans tous les systèmes de fichiers de Microsoft à l' exception du système de fichiers tube nommé.