Cómo escapar de los espacios en las rutas de archivos en la línea de comandos de Windows

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 también pueden contener espacios. Para especificar una ruta de archivo con un espacio dentro, deberá “escapar”.

Línea de comando 101: por qué tienes que escapar de los espacios

“Escapar” de un carácter cambia su significado. Para example, 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.

Para example, supongamos que tiene un archivo de texto del que desea ver el contenido. Puede hacerlo con el comando de tipo. 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

Estupendo. Ahora, ¿qué sucede si tiene 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.

type C:Test FolderTest File.txt


La línea de comando cree que está tratando de buscar un archivo llamado C:Test y dice que “no se puede encontrar la ruta especificada”.

Tres formas de escapar de los espacios en Windows

Hay tres formas diferentes de escapar de las rutas de los archivos en Windows:

  • Encerrando la ruta (o partes de ella) entre comillas dobles ( ” ).
  • Agregando un carácter de intercalación ( ^ ) antes de cada espacio. (Esto solo funciona en Símbolo del sistema/CMD, y no parece funcionar con todos los comandos).
  • Agregando 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.

Encierre la ruta entre comillas ( ” )

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

type "C:Test FolderTest File.txt"

De hecho, puede encerrar partes de la ruta entre comillas si lo prefiere. Para example, supongamos que tiene un archivo llamado File.txt en esa carpeta. Podrías ejecutar lo siguiente:

type C:"Test Folder"File.txt

Sin embargo, eso no es necesario; en la mayoría de los casos, puede usar comillas alrededor de toda la ruta.

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

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

A veces: use el carácter de intercalación para escapar de los espacios ( ^ )

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


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

Para example, con nuestro comando de muestra, ejecutaría lo siguiente y no funcionaría:

type C:Test^ FolderTest^ File.txt

Error de escape de espacio de intercalación en el símbolo del sistema

Por otro lado, si intentamos abrir nuestro archivo directamente 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

El espacio de intercalación se escapa 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é utilizando. 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 recomendamos que utilice comillas dobles en el símbolo del sistema o cambie a PowerShell y utilice el método de acento grave que se indica a continuación.

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

PowerShell usa el carácter de acento grave ( ` ) como carácter de escape. Simplemente agréguelo antes de cada espacio en el nombre del archivo. (Encontrará este carácter encima de la tecla Tabulador 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 del siguiente carácter.

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

Escapar de espacios con acento grave en PowerShell

Si está familiarizado con los sistemas operativos similares a UNIX, como Linux y macOS, es posible que esté acostumbrado a usar el carácter de barra invertida () antes de un espacio para escapar. Windows usa esto para rutas de archivos normales, por lo que no funciona: los caracteres de intercalación (^) y acento grave (`) son la versión de Windows de la barra invertida, según el shell de línea de comandos que esté usando.

Related Posts