Perché non riesco a nominare una cartella o un file 'CON' in Windows?


30

In tutte le versioni di Windows, non siamo in grado di rinominare un file o un nome di cartella come CONsenza software di ridenominazione di file di terze parti. Cercare di farlo in Windows 7 provoca un errore:

Il nome del dispositivo specificato non è valido.

Cercare di salvare un file come con.txtnel Blocco note porta a un errore simile:

Questo nome file è riservato per l'uso da Windows.
Scegli un altro nome e riprova.

Perché non possiamo nominare un file o una cartella CONin Windows?


Risposte:


35

"con" è il nome di un dispositivo I / O di sistema, la console.

  • contro
  • sbagliare
  • nul

E un altro paio, penso.

Ai vecchi tempi in DOS era comune creare un file (e lo faccio ancora ogni tanto) con:

C:\>copy con foo.txt
I'm typing some text here.
^Z
    1 file(s) copied.
C:\>

Una correzione minore: err non è riservato. L'elenco completo dei nomi dei dispositivi riservati è: con, nul, prn, com1..9 e lpt1..9. Sono persino riservati se utilizzati con qualsiasi estensione (ad es con.txt.).
efotinis,

"a meno che non utilizziamo un software di ridenominazione" A proposito della parte citata, in che modo il "software di ridenominazione" aggira quello che è essenzialmente un limite del sistema operativo
Sathyajith Bhat

1
Mi hai. Sono scettico che qualsiasi "software di ridenominazione" può persino farlo. Ma se è possibile, sarei preoccupato di poter aprire o addirittura spostare il file. Come hai detto, il sistema operativo ne metterà in discussione.
JMD,

11
L'elenco principale è su msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx Non utilizzare i seguenti nomi di dispositivo riservati per il nome di un file: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9. Evita anche questi nomi seguiti immediatamente da un'estensione; ad esempio, NUL.txt non è raccomandato.
shf301,

1
@Sathya: utilizzando il prefisso \\? \ Per ignorare l'analisi del nome file. Ad esempio, "\\? \ C: \ con \ nul.txt".
Grawity,

13

CONè un nome riservato in Windows. Così come lo sono PRN, AUX, NUL, LPT1e altri.


2
CON è l'abbreviazione di console. Apri una finestra del prompt dei comandi, vai a una directory con un file di testo e digita "copy file.txt con" Scriverà il contenuto del file di testo sulla console (la finestra del prompt dei comandi)
Keltari

12

ho dato questa risposta a un duplicato e ho pensato di pubblicarla qui come riferimento:

come precedentemente affermato. è una parola riservata dalla parte posteriore in MS-DOS, per il dispositivo CONsole (per quanto posso ricordare). ma, puoi forzare windows / dos a creare la cartella per te . per i dispositivi, utilizza il formato \\.\[RESERVED_WORD]per accedere al "file" (questi dispositivi utilizzavano i file per la comunicazione). per forzare Windows a creare la tua cartella, invece di procedere mkdir [RESERVED_WORD], procedi come segue:

mkdir \\.\[absolute path to folder of choice, including drive letter]\[RESERVED_WORD]

ad esempio, per creare la cartella CON sul mio desktop,

mkdir \\.\C:\Users\me\Desktop\CON

per eliminare la cartella, è necessario fare riferimento allo stesso modo, altrimenti non funzionerà.

rmdir \\.\C:\Users\me\Desktop\CON

il mio consiglio però è di usare solo un nome diverso. sarebbe molto difficile fare sempre riferimento ad essa tramite il suo percorso assoluto, soprattutto se stai sviluppando un'app che prevedi di distribuire.



3

Oltre alla risposta di Pablo Santa Cruz , ecco l'elenco completo delle parole chiave utilizzate internamente da Windows e riservate. Tutti i seguenti non fanno distinzione tra maiuscole e minuscole

  • CON
  • PRN
  • AUX
  • COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, COM0
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, LPT0

Puoi usare _coninvece


2

Puoi rinominarlo senza utilizzare alcun software speciale, solo il prompt dei comandi:

Per esempio:

C:\>echo Test > \\?\C:\con
C:\>type \\?\C:\con
Test
C:\>rename \\?\C:\con test.txt
C:\>type test.txt
Test

Dopo \\?\il percorso completo dovrebbe essere specificato.


0

Proprio come ci sono caratteri che non possono essere utilizzati in un nome file , ci sono anche diverse parole (nomi di file interi) che non possono essere utilizzate perché sono riservate.


0

copy conè un metodo arcaico (MS-DOS) per creare un file di testo. Per esempio:

copy con output.txt

Quindi è una parola riservata e non può essere utilizzata come nome di una cartella in Windows.


0

Come accennato, è possibile creare e manipolare file e cartelle con nomi riservati sulla riga di comando utilizzando uno spazio dei nomi di dispositivo o nome file come \\.\C:\NUL, ma guardare cosa succede quando si tenta di accedere a tale file o cartella tramite Esplora risorse:

Errore durante l'apertura della cartella denominata NUL Errore durante l'eliminazione della cartella denominata NUL

Qualsiasi accesso a un oggetto con un nome dispositivo riservato viene considerato come riferito al dispositivo specificato da quel nome, a meno che non si usi la soluzione alternativa dello spazio dei nomi sopra menzionata. Questi errori si verificano perché Windows sta tentando di operare su di essi come se fossero cartelle normali, ma non si può aprire un dispositivo di nome NUL, CONo altrimenti come una cartella da cui il Incorrect functiondell'errore (che è simile al Inappropriate ioctl for deviceerrore su Linux).


3
Hai confuso un po 'la terminologia. \\.\…è uno spazio dei nomi di dispositivo Win32 , \\?\…uno spazio dei nomi di file Win32 (anche per le cartelle) ed \\compname\…è un percorso UNC ( rete ) .
Synetech,

@Synetech: corretto.
bwDraco,
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.