¿Qué caracteres no se pueden utilizar en el nombre de un archivo o carpeta en Windows?

Esteban Sierra

Hay una serie de caracteres que no se pueden utilizar en el nombre de un archivo o carpeta en Windows. En esta publicación os dejo esa información, acompañada de alguna que otra recomendación que debemos tener en cuenta al nombrar archivos o carpetas en Windows.

Cuando estamos usando Windows y vamos a nombrar un archivo o carpeta e intentamos añadir uno de estos caracteres, el Explorador de Archivos nos muestra un mensaje en un globo, para hacernos saber los caracteres que no están permitidos.

Caracteres que no se pueden utilizar en el nombre de un archivo o carpeta en Windows

En el caso de estar desarrollando alguna aplicación que genere, guarde o renombre ficheros o carpetas en disco, necesitamos normalizar el nombre que le vayamos a poner a ese fichero o carpeta para que no se produzca ningún error. Por ello, os dejo este recurso para que tengáis a mano los caracteres que no se pueden utilizar en el nombre de un archivo o carpeta en Windows. Esos caraceteres no permitidos son:

\ / : * ? " < > |

Además, tenemos que tener en cuenta que la longitud de la ruta no debe exceder de 260 caracteres, entre los que se incluye el nombre de la unidad de disco. Os dejo un ejemplo para entenderlo mejor

«C:/» + [nombre de archivo = 256 caracteres] + null terminator

Si estás programando en C#, dentro del espacio de nombres System.IO, hay dos métodos que nos pueden ayudar con la tarea de normalizar el nombre de ficheros y carpetas; estos métodos son Path.GetInvalidFileNameChars() y Path.GetInvalidPathChars(), con los que podríamos hacer la sustitución de todos esos caracteres no permitidos por un caracter válido como podría ser el guión bajo («_»). Os dejo un ejemplo de como podría hacerse:

//Normalizar el nombre de un fichero
public static string NormalizeFileName(string fileName)
{
     string invalidChars = System.Text.RegularExpressions.Regex.Escape(
          new string(System.IO.Path.GetInvalidFileNameChars())
     );
     string invalidRegStr = string.Format(@"([{0}]*\.+$)|([{0}]+)", invalidChars);

     return System.Text.RegularExpressions.Regex.Replace(fileName, invalidRegStr, "_");
}

//Normalizar el nombre de una carpeta
public static string NormalizeDirName(string dirName)
{
     string invalidChars = System.Text.RegularExpressions.Regex.Escape(
          new string(System.IO.Path.GetInvalidPathChars())
     );
     string invalidRegStr = string.Format(@"([{0}]*\.+$)|([{0}]+)", invalidChars);

     return System.Text.RegularExpressions.Regex.Replace(dirName, invalidRegStr, "_");
}

Espero que te haya servido de ayuda esta entrada, si es así te agradecería un comentario o un compartir. Igualmente, si tienes cualquier duda o sugerencia, también puedes escribir un comentario.

9 comentarios en «¿Qué caracteres no se pueden utilizar en el nombre de un archivo o carpeta en Windows?»

    • Esos caracteres no permite Windows que se usen para nombrar ficheros o carpetas, porque son caracteres reservados del sistema y su uso tiene alguna utilidad. Por poner algún ejemplo:
      – El asterisco (*) se utiliza en las búsquedas como comodín.
      – Las barras \ y / se utilizan en las rutas de acceso a ficheros o carpetas dentro del sistema
      Espero haberte ayudado. Un saludo

      Responder
    • Hola Lulis! La coma es un carácter permitido para usar en los nombres de los ficheros en Windows. De todas formas, yo personalmente, es un carácter que no me gusta usar para nombrar ficheros o carpetas, usando en su lugar el guion para evitar problemas.
      Un saludo

      Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies