2008-09-23 21 views

Respuesta

14

De: http://www.grouplogic.com/knowledge/index.cfm/fuseaction/view_Info/docID/111.

Los siguientes caracteres no son válidos como nombres de archivo o carpeta en NTFS utilizando Windows: /?<>\:*|" y cualquier carácter que se pueda escribir con la tecla Ctrl.

Además de los caracteres ilegales anteriores, caret ^ tampoco está permitido en los sistemas operativos Windows que utilizan el sistema de archivos FAT.

En Windows con el archivo de sistema FAT, los nombres de carpetas y archivos pueden tener hasta 255 caracteres.

En Windows, el archivo de sistema NTFS y los nombres de carpeta pueden tener hasta 256 caracteres.

Debajo de la ventana, la longitud de una ruta completa en ambos sistemas es de 260 caracteres.

Además de estos personajes, las siguientes convenciones también son ilegales:

  • La colocación de un espacio al final del nombre
  • colocar un punto al final del nombre

Los siguientes nombres de archivo también están reservados en Windows:

  • com1,
  • com2,
  • ...
  • com9,
  • lpt1,
  • lpt2,
  • ...
  • lpt9,
  • con,
  • nul,
  • prn
+5

aux tampoco es un nombre de archivo permitido en Windows según el artículo Adam menciona –

+1

La legitimidad de ese artículo me parece cuestionable, porque dice que en Mac OS X," Archivo y los nombres de las carpetas no pueden comenzar con un punto '.' ", lo cual es absolutamente falso. – Chris

+1

No son solo los nombres de archivo que usted reservó en Windows, es alguno de esos nombres de dispositivos seguidos de cualquier extensión, p. ej. 'COM5.foo' y' COM5.bar' son ilegales. –

2

Bueno, para MSDOS/Windows, NUL, PRN, LPT < n> y CON. Incluso causan problemas si se utiliza con una extensión: "NUL.TXT"

+1

Se metió en esta tontería hoy. No tengo idea de por qué estos nombres de archivo son ilegales si les agregas extensiones> :( –

+0

Creo que son programas como LINK.EXE (¿recuerdas?) Que aceptarían un nombre de archivo base, y luego generarían tres archivos diferentes con extensiones diferentes. podría simplemente escribir "nul" o "prn", y el programa simplemente podría agregar ciegamente la extensión, y las cosas aún funcionarían. –

4

Gotcha Unix difícil cuando usted no sabe:

archivos que comienzan con - o - son legales, pero un dolor en el trasero para trabajar, ya que muchas herramientas de línea de comandos creen que les estás proporcionando opciones.

Muchas de esas herramientas tienen un marcador especial "-" para indicar el final de las opciones:

gzip -9vf -- -mydashedfilename 
1

A menos que estés tocando directorios especiales, los únicos nombres ilegales en Linux son '.' y '..'. Cualquier otro nombre es posible, aunque el acceso a algunos de ellos desde el shell requiere el uso de secuencias de escape.

EDITAR: Como dijo Vinko Vrsalovic, los archivos que comienzan con '-' y '--' son un problema, ya que las secuencias de caracteres son interpretadas por la aplicación, no por el shell.

+0

Si eso es cierto, ¿cómo se crea un nombre de archivo con una barra diagonal? – Malvineous

+0

Sí, '/'no es válido en un nombre de archivo en cualquier sistema de archivos tipo – Basic

4

Como han dicho otros, los nombres de dispositivo como COM1 no son posibles como nombres de archivo en Windows porque son dispositivos reservados.

Sin embargo, existe un método de escape para crear y acceder a archivos con estos nombres reservados, por ejemplo, este comando redirigir la salida del comando ver en un archivo llamado COM1:

ver > "\\?\C:\Users\username\COM1" 

Ahora se va tener un archivo llamado COM1 que el 99% de los programas no podrá abrir, y probablemente se congele si intenta acceder.

Here's the Microsoft article que explica cómo funciona este "espacio de nombre de archivo". Básicamente le dice a Windows que no haga ningún procesamiento de cadenas en el texto y que lo pase directamente al sistema de archivos. Este truco también se puede usar para trabajar con rutas de más de 260 caracteres.

+0

Traté de eliminar el archivo creado de nuevo, pero del congela en la línea de comando ... Editar: No puedo matar el evento cmd con el administrador de tareas o el hacker de proceso ... ¿Qué está pasando aquí? –

+0

Funciona bien para mí. No se puede 'del COM1' porque, por supuesto, tratará de acceder al puerto serie en lugar del archivo y provocará que el proceso se bloquee, esperando una respuesta del puerto serie en sí (exactamente el motivo por el cual los nombres de archivo están reservados y no está disponible para usar en primer lugar.) Si usaste el método de escape en mi respuesta para crear el archivo, entonces tendrás que usar eso para eliminarlo también: 'del" \\? \ C: \ Users \ username \ COM1 "' – Malvineous

+0

Por supuesto que utilicé la misma \\? \ Ruta para eliminar. Me pregunto por qué mi cmd se congeló. Me rendí y reinstalé mi sistema operativo completo. Eso lo solucionó bastante rápido. –

Cuestiones relacionadas