¿Por qué no puedo nombrar una carpeta o archivo 'CON' en Windows?

30

En todas las versiones de Windows, no podemos cambiar el nombre de un archivo o una carpeta como CONsin un software de cambio de nombre de terceros. Intentar hacer esto en Windows 7 produce un error:

El nombre del dispositivo especificado no es válido.

Intentar guardar un archivo como con.txten el Bloc de notas conduce a un error similar:

Este nombre de archivo está reservado para su uso por Windows.
Elija otro nombre e intente nuevamente.

¿Por qué no podemos nombrar un archivo o carpeta CONen Windows?

hari
fuente

Respuestas:

35

"con" es el nombre de un dispositivo de E / S del sistema, la consola.

  • estafa
  • errar
  • nul

Y un par más, creo.

En los viejos tiempos, era común en DOS crear un archivo (y todavía hago esto ocasionalmente) con:

C:\>copy con foo.txt
I'm typing some text here.
^Z
    1 file(s) copied.
C:\>
JMD
fuente
Una corrección menor: err no está reservado. La lista completa de nombres de dispositivos reservados es: con, nul, prn, com1..9 y lpt1..9. Incluso están reservados cuando se usan con cualquier extensión (por ejemplo con.txt).
efotinis
"a menos que se utiliza un software de cambio de nombre" Sobre la parte citada, ¿cómo el "software de cambiar el nombre de" moverse por lo que es esencialmente un limitatiom OS
Sathyajith Bhat
1
Me tienes. Soy escéptico de que cualquier "software de cambio de nombre" pueda hacerlo. Pero si puede, me preocuparía poder abrir o incluso mover el archivo. Como dijiste, el sistema operativo va a tener problemas con él.
JMD
11
La lista maestra se encuentra en msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx No use los siguientes nombres de dispositivo reservados para el nombre de un archivo: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 y LPT9. También evite estos nombres seguidos inmediatamente por una extensión; por ejemplo, NUL.txt no se recomienda.
shf301
1
@Sathya: Al usar el prefijo \\? \ Para omitir el análisis del nombre de archivo. Por ejemplo, "\\? \ C: \ con \ nul.txt".
Grawity
13

CONes un nombre reservado en Windows. Así son PRN, AUX, NUL, LPT1y otros.

Pablo Santa Cruz
fuente
2
CON es la abreviatura de consola. Abra una ventana del símbolo del sistema, navegue a un directorio con un archivo de texto y escriba "copy file.txt con". Escribirá el contenido del archivo de texto en la consola (la ventana del símbolo del sistema)
Keltari
12

Di esta respuesta a un duplicado y pensé en publicarla aquí para su referencia:

Como se dijo anteriormente. es una palabra reservada desde atrás en MS-DOS, para el dispositivo CONsole (hasta donde puedo recordar). pero puede forzar windows / dos para que cree la carpeta por usted . para dispositivos, utiliza el formato \\.\[RESERVED_WORD]para acceder al "archivo" (estos dispositivos utilizan archivos para la comunicación). para forzar a Windows a crear su carpeta, en lugar de hacerlo mkdir [RESERVED_WORD], haga lo siguiente:

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

por ejemplo, para crear una carpeta CON en mi escritorio,

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

Para eliminar la carpeta, debe hacer referencia a ella de la misma manera, de lo contrario no funcionará.

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

Mi consejo es usar un nombre diferente. sería muy difícil referirse siempre a él a través de su ruta absoluta, especialmente si está desarrollando una aplicación que planea implementar.

maranas
fuente
4

Esto se debe a que se utiliza para representar los "dispositivos internos". Sin embargo, puede crear esta carpeta con el siguiente comando en un símbolo del sistema:

C:\>md \\.\e:\con

Esta carpeta no se puede eliminar haciendo clic derecho, eliminar. Debe usar el siguiente comando (nuevamente en el símbolo del sistema):

C:\>rd \\.\e:\con

Fuente: http://yhisham.blogspot.in/2012/09/mystery-about-con-folder-in-windows.html

usuario1662177
fuente
3

Además de la respuesta de Pablo Santa Cruz , aquí está la lista completa de palabras clave utilizadas internamente por Windows y que están reservadas. Todos los siguientes son mayúsculas y minúsculas

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

Puedes usar _conen su lugar

RafaSashi
fuente
2

Puede cambiarle el nombre sin usar ningún software especial, solo el símbolo del sistema:

Por ejemplo:

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

Después se \\?\debe especificar la ruta completa.

Regente
fuente
0

Al igual que hay caracteres que no se pueden usar en un nombre de archivo , también hay varias palabras (nombres de archivo completos) que no se pueden usar porque están reservados.

Synetech
fuente
0

copy cones un método arcaico (MS-DOS) para crear un archivo de texto. Por ejemplo:

copy con output.txt

Por lo tanto, es una palabra reservada y no se puede usar como nombre de carpeta en Windows.

Mehper C. Palavuzlar
fuente
0

Como se mencionó, puede crear y manipular archivos y carpetas con nombres reservados en la línea de comando utilizando un dispositivo o un espacio de nombre de nombre de archivo como \\.\C:\NUL, pero observe lo que sucede cuando intenta acceder a dicho archivo o carpeta a través del Explorador de Windows:

Error al abrir la carpeta llamada NUL Error al eliminar la carpeta llamada NUL

Cualquier acceso a un objeto con un nombre de dispositivo reservado se trata como una referencia al dispositivo especificado por ese nombre, a menos que utilice la solución alternativa de espacio de nombres mencionada anteriormente. Estos errores se producen porque Windows está tratando de operar en ellos como si fueran carpetas normales, pero no se puede abrir un dispositivo llamado NUL, CONo de otra manera como una carpeta de ahí el Incorrect functionerror (que es similar a la Inappropriate ioctl for devicede error en Linux).

bwDraco
fuente
3
Has mezclado un poco la terminología. \\.\…es un espacio de nombres de dispositivo Win32 , \\?\…es un espacio de nombres de nombre de archivo Win32 (también para carpetas) y \\compname\…es una ruta UNC ( red ) .
Synetech
@Synetech: corregido.
bwDraco