
Windows 11 consente ai file di avere nomi lunghi 200 caratteri, pieni di spazi ed emoji, ma Esplora file si rifiuta di assegnare a un file o a una cartella il nome CON. CON, PRN, AUX, NUL, da COM1 a COM9 e da LPT1 a LPT9 sono nomi di dispositivo riservati. L'ingegnere di MS Raymond Chen ne fa risalire l'origine a DOS 1.0, una versione che non supportava nemmeno le cartelle.
Ho verificato la regola su un PC con Windows 11 26H2. La restrizione introdotta dal sistema operativo del 1981 è ancora saldamente in vigore, sebbene Windows Latest abbia scoperto che una parte non funziona più come descritto nella documentazione di MS.

CON, PRN, AUX e NUL sono dispositivi, non nomi di file, in Windows 11
Ogni nome riservato corrisponde a un dispositivo. NUL è particolarmente degno di nota: agisce come un buco nero che elimina qualsiasi cosa gli venga inviata.
La documentazione di MS sulla denominazione dei file continua a indicare agli sviluppatori: “Non utilizzare i seguenti nomi riservati come nome di un file.” Le restrizioni si applicano anche alle cartelle, perché Windows considera una cartella come un tipo speciale di file.

Secondo MS, l'aggiunta di un'estensione non dovrebbe consentire di aggirare la restrizione, anche se in alcuni casi ciò accade. L'azienda afferma: “NUL.txt e NUL.tar.gz sono entrambi equivalenti a NUL.” Nemmeno le cifre in apice fanno eccezione. Windows interpreta ¹, ² e ³ come cifre, il che significa che nomi come COM¹ e LPT³ sono riservati “in ogni directory.”
Dal punto di vista dell'architettura, COM1 è un collegamento alla porta seriale all'interno del kernel di Windows. MS lo definisce un nome di dispositivo MS-DOS, quindi digitando COM1 si accede alla porta anziché a un file.
Raymond Chen spiega perché una regola di DOS 1.0 è ancora attiva in Windows 11
La storia inizia con CP/M, il sistema operativo con cui MS-DOS cercava di mantenere la compatibilità. In CP/M, i nomi dei dispositivi includevano sempre i due punti, come CON:. MS-DOS rese facoltativi i due punti, una decisione che Michal Necasek dell'OS/2 Museum definisce il “difetto fatale.” Un nome semplice come CON non fornisce a DOS alcuna indicazione sul fatto che si riferisca a un file o alla console.

In un articolo del 2003 pubblicato sul suo blog Old New Thing, Chen spiegò che “DOS 1.0 non supportava le sottodirectory, le lettere minuscole o nomi di file più lunghi del formato 8.3.” Questa limitazione è anche l'insolita ragione per cui alcuni dei file di sistema più vecchi di Windows 11 conservano nomi risalenti all'epoca di DOS.
All'epoca, se un assembler chiedeva dove salvare il proprio output e l'utente desiderava una stampa, “si digitava ‘PRN’ come nome del file.” Digitando NUL l'output veniva eliminato, mentre CON lo visualizzava sullo schermo.
Poiché i dischi avevano una sola directory, non esisteva un altro luogo in cui questi nomi speciali potessero funzionare. Quando le cartelle arrivarono con DOS 2.0 nel 1983, i nomi dei dispositivi dovettero funzionare anche al loro interno. Come spiegò Chen, altrimenti gli utenti non avrebbero potuto passare a un'altra cartella, eseguire un assembler e digitare NUL per eliminarne l'output. MS fece quindi in modo che i nomi funzionassero in ogni cartella, ed è per questo che ancora oggi non è possibile creare un file denominato PRN nella cartella Documenti.
Perché MS non ha eliminato questo comportamento dopo più di 40 anni? “Perché tutti continuano a farvi affidamento,” scrisse Chen. I file batch sopprimono l'output reindirizzandolo a >NUL, gli script verificano l'esistenza di una cartella con “if exist directoryname\nul,” e le guide meno recenti indicano agli utenti di creare file con “copy CON.”
Se la regola venisse eliminata, ogni script che reindirizza l'output a NUL inizierebbe invece a scrivere file reali.
Un tempo questa regola causava l'arresto anomalo di interi PC. Windows 95 e Windows 98 rifiutavano i percorsi contenenti un nome di dispositivo, ma si bloccavano quando un percorso ne conteneva due, come C:\con\con. Il bollettino MS00-017 di MS del marzo 2000 riconosceva che ciò “di solito provoca un arresto anomalo.”
Ho testato la regola dell'era DOS su Windows 11 26H2 e NUL.txt è riuscito a passare
Su un PC con Windows 11 26H2, rinominando una nuova cartella in CON è apparso il messaggio “Il nome di dispositivo specificato non è valido.” Anche PRN, AUX, NUL e COM1 sono stati rifiutati.
Tuttavia, NUL.txt è stato accettato senza errori, così come CON.txt, nonostante la documentazione di MS continui ad affermare che NUL.txt è equivalente a NUL.

Sebbene la documentazione di MS non sia stata aggiornata, nel 2022 gli sviluppatori che esaminavano il supporto di Windows in Python hanno osservato che Windows 11 aveva smesso di trattare come speciali i nomi di dispositivo con estensioni durante l'elaborazione dei percorsi dei file.
Sfortunatamente, tali file possono comportarsi in modo imprevedibile. Un utente di MS Q&A ha scoperto che PowerShell riusciva a elencare NUL.txt, ma non poteva né aprirlo né eliminarlo. Un consulente della community ha risposto che “il risultato potrebbe essere imprevedibile.” Ciò potrebbe spiegare perché MS continua ad affermare che le estensioni non influiscono su nomi come NUL.txt e CON.txt.

Il Prompt dei comandi può ancora dimostrare il vecchio comportamento di DOS. L'esecuzione di echo hello > CON ha visualizzato “hello” sullo schermo anziché creare un file, mentre echo test > COM¹ non è riuscito, esattamente come descritto nella documentazione di MS.
Prima di criticare Windows, vale la pena notare che nel 2024 i manutentori di Linux hanno rinominato il file di un driver grafico da aux.c a auxch.c, perché il nome originale impediva agli utenti di clonare il kernel Linux su Windows.
Windows può comunque essere criticato, perché Linux ha modificato il proprio codice per adattarsi a Windows, mentre Windows continua a conservare una regola del 1981 per script che potrebbero non essere stati modificati da decenni.
Windows 11 ha allentato la restrizione quanto basta per consentire NUL.txt, ma CON viene ancora trattato come un dispositivo anziché come un nome di file. Come il gestore heap di Windows 95 ancora incluso in Windows 11, è un altro componente legacy che MS non può rimuovere senza il rischio di compromettere il file batch trentennale di qualcuno.
Windows Latest dipende da lettori come te. Rendici la tua fonte preferita su Google Discover e Ricerca Google e aiutaci a far arrivare il nostro giornalismo indipendente a un maggior numero di persone.

