Como escapar de espaços em caminhos de arquivo na linha de comando do Windows

Janela de prompt de comando no Windows 10

Ambientes de linha de comando, como o Prompt de Comando do Windows e o PowerShell, usam espaços para separar comandos e argumentos – mas os nomes de arquivos e pastas também podem conter espaços. Para especificar um caminho de arquivo com um espaço dentro dele, você precisará “escapar” dele.

Linha de comando 101: Por que você precisa escapar do Spaces

“Escapar” de um personagem muda seu significado. Por exemplo, escapar um espaço fará com que o shell o trate como um caractere de espaço padrão, em vez de um caractere especial que separa os argumentos da linha de comando.

Por exemplo, digamos que você tenha um arquivo de texto cujo conteúdo deseja ver. Você pode fazer isso com o comando type. Supondo que o arquivo de texto esteja em C:\Test\File.txt, o seguinte comando no Prompt de Comando mostrará seu conteúdo:

digite C: \ Test \ File.txt

Ótimo. Agora, e se você tiver o mesmo arquivo em C:\Test Folder\Test File.txt? Se você tentar executar o comando abaixo, não funcionará – esses espaços no caminho do arquivo estão atrapalhando.

digite C: \ Test Folder \ Test File.txt

A linha de comando pensa que você está tentando procurar um arquivo chamado  C:\Teste diz que “não é possível encontrar o caminho especificado”.

Erro de prompt de comando ao não escapar espaços

Três maneiras de escapar de espaços no Windows

Existem três maneiras diferentes de escapar de caminhos de arquivo no Windows:

  • Colocando o caminho (ou partes dele) entre aspas duplas (”).
  • Adicionando um caractere circunflexo (^) antes de cada espaço. (Isso só funciona no Prompt de Comando / CMD e não parece funcionar com todos os comandos.)
  • Adicionando um caractere de acento grave (`) antes de cada espaço. (Isso só funciona no PowerShell, mas sempre funciona.)
Recomendado:  Faça isso para se preparar para a próxima rodada de fumaça de incêndio florestal

Mostraremos como usar cada método.

Coloque o caminho entre aspas (”)

A maneira padrão de garantir que o Windows trate um caminho de arquivo adequadamente é colocá-lo entre aspas duplas (”). Por exemplo, com nosso comando de amostra acima, apenas executaríamos o seguinte:

digite "C: \ Test Folder \ Test File.txt"

Na verdade, você pode colocar partes do caminho entre aspas, se preferir. Por exemplo, digamos que você tenha um arquivo denominado File.txt nessa pasta. Você pode executar o seguinte:

digite C: \ "Pasta de teste" \ Arquivo.txt

No entanto, isso não é necessário – na maioria dos casos, você pode apenas usar aspas em todo o caminho.

Esta solução funciona tanto no ambiente tradicional de Prompt de Comando (CMD) quanto no Windows PowerShell.

Colocar espaços entre aspas duplas no prompt de comando

Às vezes: use o caractere circunflexo para escapar de espaços (^)

No prompt de comando, o caractere circunflexo (^) permitirá que você escape de espaços – em teoria. Basta adicioná-lo antes de cada espaço no nome do arquivo. (Você encontrará este caractere na linha numérica do teclado. Para digitar o caractere circunflexo, pressione Shift + 6.)

Aqui está o problema: embora deva funcionar, e às vezes funciona, não funciona o tempo todo. O modo como o Prompt de Comando lida com esse personagem é estranho.

Por exemplo, com nosso comando de amostra, você executaria o seguinte e não funcionaria:

tipo C: \ Test ^ Folder \ Test ^ File.txt

Erro de escape de espaço circunflexo no prompt de comando

Por outro lado, se tentarmos abrir nosso arquivo diretamente digitando seu caminho no Prompt de Comando, podemos ver que o caractere circunflexo escapa corretamente dos espaços:

C: \ Test ^ Folder \ Test ^ File.txt

Espaço circunflexo escapando funcionando no prompt de comando

Então, quando isso funciona? Bem, com base em nossa pesquisa, parece funcionar com alguns aplicativos e não com outros. Sua milhagem pode variar dependendo do comando que você está usando. O modo como o Prompt de Comando lida com esse personagem é estranho. Experimente com qualquer comando que estiver usando, se estiver interessado – pode ou não funcionar.

Recomendado:  O que significa “TBF” e como você o usa?

Para manter a consistência, recomendamos que você use aspas duplas no prompt de comando ou mude para o PowerShell e use o método de acento grave abaixo.

PowerShell: use o caractere com sotaque grave (`)

O PowerShell usa o caractere de acento grave (`) como seu caractere de escape. Basta adicioná-lo antes de cada espaço no nome do arquivo. (Você encontrará esse caractere acima da tecla Tab e abaixo da tecla Esc no teclado.)

tipo C: \ Test` Folder \ Test` File.txt

Cada caractere de acento grave diz ao PowerShell para escapar do caractere a seguir.

Observe que isso só funciona no ambiente PowerShell. Você terá que usar o caractere circunflexo no prompt de comando.

Escapando de espaços com sotaque grave no PowerShell


Se você está familiarizado com sistemas operacionais semelhantes ao UNIX, como Linux e macOS, pode estar acostumado a usar o caractere de barra invertida (\) antes de um espaço de escape. O Windows usa isso para caminhos de arquivo normais, então não funciona – os caracteres circunflexo (^) e acento grave (`) são a versão do Windows da barra invertida, dependendo de qual shell de linha de comando você está usando.