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

Conteúdo

Janela de prompt de comando no Windows 10

Ambientes de linha de comando, como prompt de comando do Windows e PowerShell, usam espaços para separar comandos e argumentos, mas os nomes dos arquivos e pastas também podem conter espaços. Para especificar um caminho de arquivo com um espaço dentro, deve “fuga”.

Linha de comando 101: Por que você deve escapar dos espaços

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

Como um exemplo, suponha 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:TestFile.txt, o seguinte comando no prompt de comando exibirá seu conteúdo:

tipo C:TestFile.txt

Excelente. Agora, E se você tiver o mesmo arquivo em C:Test FolderTest File.txt? Se você tentar executar o seguinte comando, isso não vai funcionar: esses espaços no caminho do arquivo atrapalham.

tipo C:Arquivo de teste FolderTest.txt

A linha de comando pensa que você está tentando encontrar um arquivo chamado C:Test e diz que “não pode encontrar o caminho especificado”.

Erro de prompt de comando quando os espaços não são escapados

Três alternativas para escapar de espaços no Windows

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

  • Incluindo o caminho (ou partes dele) entre aspas duplas (”).
  • Adicionando um acento 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 Caráter com Sotaque Grave (`) antes de cada espaço. (Isso só funciona no PowerShell, mas sempre funciona).

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 corretamente é colocá-lo entre aspas duplas (”). Como um exemplo, com nosso exemplo de comando acima, nós simplesmente executaríamos o seguinte em vez:

modelo "C:Arquivo de teste FolderTest.txt"

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

tipo C:"Pasta de Teste"Arquivo.txt

Apesar disto, Isso não é necessário; na maioria dos casos, você pode usar aspas ao longo do caminho.

Esta solução funciona tanto no ambiente de prompt de comando tradicional (CMD) como no Windows PowerShell.

Incluir espaços entre aspas duplas no prompt de comando

As vezes: use o caractere acento circunflexo para escapar de espaços (^)

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

Aqui está o problema: embora isso deva funcionar, e às vezes acontece, não funciona o tempo todo. O manuseio do prompt de comando deste personagem é estranho.

Como um exemplo, com nosso comando de amostra, Eu executaria o seguinte e não funcionaria:

tipo C:Test ^ FolderTest ^ File.txt

Erro de escape do 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 acento circunflexo escapa dos espaços corretamente:

C:Test ^ FolderTest ^ File.txt

Espaço circunflexo escapando trabalhando no prompt de comando

Então, Quando funciona? Nós vamos, de acordo com nossa pesquisa, parece funcionar com alguns aplicativos e não com outros. Sua milhagem pode variar dependendo do comando que você está usando. O manuseio do prompt de comando deste personagem é estranho. Experimente com qualquer comando que você estiver usando, se você estiver interessado, Isto pode ou não funcionar.

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

PowerShell: use o caráter de sotaque grave (`)

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

tipo C:Test` FolderTest` File.txt

Cada caractere de acento grave diz ao PowerShell para escapar do próximo caractere.

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

Fuja dos Grave Spaces no PowerShell


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

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.