Cómo escapar de espacios en rutas de archivo en la línea de comandos de Windows

Contenidos

Ventana del símbolo del sistema en Windows 10

Los entornos de línea de comandos como el símbolo del sistema de Windows y PowerShell usan espacios para separar comandos y argumentos, pero los nombres de archivos y carpetas además pueden contener espacios. Para especificar una ruta de archivo con un espacio en su interior, deberá «escapar».

Línea de comando 101: Por qué debes de escapar de los espacios

«Escapar» de un personaje cambia su significado. A modo de ejemplo, escapar de un espacio hará que el shell lo trate como un carácter de espacio estándar en lugar de un carácter especial que separa los argumentos de la línea de comandos.

A modo de ejemplo, supongamos que tiene un archivo de texto cuyo contenido desea ver. Puedes hacerlo con el comando type. Suponiendo que el archivo de texto está en C:TestFile.txt, el siguiente comando en el símbolo del sistema mostrará su contenido:

type C:TestFile.txt

Excelente. Ahora, ¿qué pasa si dispones de el mismo archivo en C:Test FolderTest File.txt? Si intenta ejecutar el siguiente comando, no funcionará: esos espacios en la ruta del archivo se interponen en el camino.

type C:Test FolderTest File.txt

La línea de comando cree que estás intentando buscar un archivo llamado C:Test y dice que «no se puede hallar la ruta especificada».

Error del símbolo del sistema cuando no se escapan los espacios

Tres alternativas para escapar de espacios en Windows

Hay tres formas diferentes de escapar de las rutas de archivo en Windows:

  • Incluyendo la ruta (o partes de ella) entre comillas dobles (”).
  • Añadiendo un carácter de intercalación (^) antes de cada espacio. (Esto solo funciona en el símbolo del sistema / CMD, y no parece funcionar con todos los comandos).
  • Añadiendo un carácter de acento grave (`) antes de cada espacio. (Esto solo funciona en PowerShell, pero siempre funciona).

Le mostraremos cómo usar cada método.

Incluya la ruta entre comillas («)

La forma estándar de asegurarse de que Windows trate correctamente una ruta de archivo es encerrarla entre comillas dobles (”). A modo de ejemplo, con nuestro comando de muestra anterior, simplemente ejecutaríamos lo siguiente en su lugar:

type "C:Test FolderTest File.txt"

En realidad, puede encerrar partes de la ruta entre comillas si lo prefiere. A modo de ejemplo, digamos que tiene un archivo llamado File.txt en esa carpeta. Podrías ejecutar lo siguiente:

type C:"Test Folder"File.txt

A pesar de esto, eso no es necesario; en la mayoría de los casos, puede utilizar comillas en toda la ruta.

Esta solución funciona tanto en el entorno tradicional de símbolo del sistema (CMD) como en Windows PowerShell.

Incluir espacios entre comillas dobles en el símbolo del sistema

A veces: utiliza el personaje Caret para escapar de espacios (^)

En el símbolo del sistema, el carácter de intercalación (^) le permitirá escapar de los espacios, en teoría. Solo agréguelo antes de cada espacio en el nombre del archivo. (Encontrarás este carácter en la fila numérica de tu teclado. Para escribir el carácter de intercalación, presiona Mayús + 6).

Aquí está el problema: aunque esto debería funcionar, y a veces lo hace, no funciona todo el tiempo. El manejo del símbolo del sistema de este personaje es extraño.

A modo de ejemplo, con nuestro comando de muestra, ejecutaría lo siguiente y no funcionaría:

type C:Test^ FolderTest^ File.txt

Error de escape de Caret space en el símbolo del sistema

Por otra parte, si intentamos abrir nuestro archivo de forma directa escribiendo su ruta en el símbolo del sistema, podemos ver que el carácter de intercalación escapa de los espacios correctamente:

C:Test^ FolderTest^ File.txt

Caret space escapando trabajando en el símbolo del sistema

Entonces, ¿cuándo funciona? Bueno, según nuestra investigación, parece funcionar con algunas aplicaciones y no con otras. Su millaje puede variar según el comando que esté usando. El manejo del símbolo del sistema de este personaje es extraño. Pruébelo con cualquier comando que esté usando, si está interesado, puede que funcione o no.

Para mantener la coherencia, le sugerimos que se ciña a las comillas dobles en el símbolo del sistema, o cambie a PowerShell y utilice el método de acento grave a continuación.

PowerShell: use el carácter de acento grave (`)

PowerShell utiliza el carácter de acento grave (`) como carácter de escape. Solo agréguelo antes de cada espacio en el nombre del archivo. (Encontrará este carácter encima de la tecla Tab y debajo de la tecla Esc en su teclado).

type C:Test` FolderTest` File.txt

Cada carácter de acento grave le dice a PowerShell que escape el siguiente carácter.

Tenga en cuenta que esto solo funciona en el entorno de PowerShell. Tendrá que utilizar el carácter de intercalación en el símbolo del sistema.

Escapar de espacios con acento grave en PowerShell


Si está familiarizado con sistemas operativos similares a UNIX como Linux y macOS, es factible que esté acostumbrado a utilizar el carácter de barra invertida () antes de un espacio para escapar. Windows utiliza esto para rutas de archivo normales, por lo que no funciona; los caracteres de acento (^) y acento grave (`) son la versión de Windows de la barra invertida, dependiendo del shell de línea de comandos que esté usando.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.