No estoy preguntando sobre las reglas sintácticas generales para los nombres de archivo. Quiero decir cosas que saltan de la nada y te muerden. Por ejemplo, tratando de nombrar un archivo "COM <n>" en Windows?¿Qué son los nombres de archivo reservados para varias plataformas?
Respuesta
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
Bueno, para MSDOS/Windows, NUL, PRN, LPT < n> y CON. Incluso causan problemas si se utiliza con una extensión: "NUL.TXT"
Se metió en esta tontería hoy. No tengo idea de por qué estos nombres de archivo son ilegales si les agregas extensiones> :( –
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. –
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
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.
Si eso es cierto, ¿cómo se crea un nombre de archivo con una barra diagonal? – Malvineous
Sí, '/'no es válido en un nombre de archivo en cualquier sistema de archivos tipo – Basic
Descripción completa de los nombres de archivos legales e ilegales en Windows: http://msdn.microsoft.com/en-us/library/aa365247.aspx
El impulso :: sistema de archivos Portability Guide tiene un montón de buena información.
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.
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í? –
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
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. –
- 1. ASP.NET MVC enrutamiento vs Reservados nombres de archivo en Windows
- 2. Usando Apache Thrift, ¿qué protocolos son compatibles para qué plataformas?
- 3. ¿Para qué son los espacios de nombres XML?
- 4. ¿Cuál es la expresión apropiada para nombrar los campos del modelo django que son nombres reservados de python?
- 5. ¿Por qué son los caracteres @, $,: y; ¿Caracteres reservados en un componente de consulta url?
- 6. ¿Qué caracteres debo escapar/desinfectar para los nombres de archivo?
- 7. ¿Cuáles son los caracteres válidos para los nombres de macro?
- 8. ¿Por qué los nombres de archivo de diseño de Android son tan limitados?
- 9. ¿Qué son las convenciones de nombres para MongoDB?
- 10. ¿Cuáles son los caracteres legales/permitidos para los nombres de los archivos del servidor web?
- 11. ¿Cuáles son las diferentes plataformas para configurar Qt
- 12. ¿Los espacios de nombres son malos para el rendimiento? (PHP)
- 13. ¿Puedo usar nombres reservados de PHP para mis funciones y clases?
- 14. Plataformas para ejecutar memcached
- 15. ¿Paperclip limpia automáticamente los nombres de archivo?
- 16. ¿Qué opciones tengo en las plataformas MS Windows para el equivalente de SUID desde plataformas basadas en Unix?
- 17. Java: ¿Por qué los nombres de los conjuntos de caracteres no son constantes?
- 18. ¿Por qué los nombres de argumento de función no son importantes en las declaraciones de C++?
- 19. ¿Qué son los RFC?
- 20. Plataformas no compatibles para java.awt.Desktop.getDesktop()
- 21. ¿Qué son los corchetes angulares para los valores de los argumentos y para qué se utilizan?
- 22. ¿Cómo son los "nombres de interfaz" de Windows?
- 23. ¿Cuáles son los nombres de columna en wincachegrind?
- 24. ¿Cuál es el estado de soporte para SHA-2 en varias plataformas?
- 25. ¿Cuáles son los nombres de tabla válidos en SQLite?
- 26. ¿Qué son los conceptos?
- 27. SharpSVN leyó TODOS los nombres de archivo
- 28. ¿Qué son los futuros?
- 29. Windows Mobile - ¿Qué plataformas de scripting están disponibles?
- 30. Android Market: los únicos informes de fallos que recibo son en Plataformas "OTHER"
aux tampoco es un nombre de archivo permitido en Windows según el artículo Adam menciona –
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
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. –