Perché non puoi usare caratteri speciali in un nome file, come "?" O ";"?


17

Quando provo a salvare un file, se uso caratteri speciali nel nome (come due punti, un punto interrogativo o un punto esclamativo) in Windows ricevo un messaggio che dice che il nome del file non è valido.

Perché?



In quale programma stai tentando di salvare un file e il carattere offensivo nel file o (come sembra) nel nome del file?
Jukka K. Korpela,


Risposte:


22

Esistono diversi caratteri che hanno un significato speciale per Windows (e DOS, da cui originariamente proveniva la maggior parte dei caratteri)

da MSDN :

Un nome file non può contenere nessuno dei seguenti caratteri:
\ /: *? "<> |

/è uno switch (e anche un separatore di directory).
\è un separatore di directory.
:è un designatore di unità.
*e ?sono caratteri jolly utilizzati nella ricerca.
"è un modo per consentire spazi nei parametri.
<e >sono reindirizzamenti che consentono all'input e all'output di un programma di venire e andare a qualcosa di diverso da schermo / tastiera.
|è una pipe che consente all'output di un programma di essere utilizzato come input per il successivo.


1
Per chiarire questa risposta, questi caratteri speciali potrebbero interferire con l'analisi di una riga di comando (o percorso) se si trovassero in un nome file. Non è necessario delimitare il nome del file in alcun modo (ad esempio, racchiuderlo tra virgolette o spazi), quindi l'incontro con un carattere così speciale causerebbe un'analisi errata (cioè la parte del carattere speciale del nome del file o un operatore?).
segatura,

1
È tuttavia discutibile che alcune di queste restrizioni non siano più necessarie a causa della gestione di nomi di file lunghi e virgolette. \ ? *e "sono gli unici realmente necessari nella sintassi corrente, poiché gli altri caratteri sono utili solo al di fuori delle virgolette. L'eccezione è: che è utile solo come secondo personaggio, che potrebbe essere messo fuorilegge pur consentendolo altrove. In altre parole, nessun file nominato A:A letter's story.txt, ma nessun problema con un file chiamatoSarah: My favorite cat.txt
trlkly

<>"sono caratteri jolly riservati. Windows li utilizza per implementare la semantica complessa per DOS *?.durante la traduzione in NT nativo, che ha una semantica semplice per *?.. I sei caratteri jolly sono riservati perché Windows implementa la corrispondenza jolly nel file system stesso, cioè direttamente nella NtQueryDirectoryFilechiamata di sistema, senza meccanismo di escape. In Unix, i caratteri jolly sono implementati a livello di applicazione, di solito da una shell che supporta il loro escape.
Eryk Sun,

Si noti che di :solito è riservato nei nomi dei file, ma non nei percorsi dei file. È usato per i nomi dei dispositivi e come delimitatore per i flussi di file (ad es. "Nomefile: streamname: streamtype"). Inoltre, alcuni file system, come il VirtualBox condiviso-cartella del file system permette :, |e caratteri di controllo ASCII (1-31) nei nomi dei file, ma sono riservate a tutti i file system di Microsoft, tranne per il file system named-pipe.
Eryk Sun,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.