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é?
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é?
Risposte:
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.
\
?
*
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
<>"
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 NtQueryDirectoryFile
chiamata 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.
:
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.