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 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.
: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.