Como faço para usar espaços no prompt de comando?

198

Como posso usar espaços na linha de comando do Windows?

cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*
faressoft
fonte

Respostas:

271

As aspas simples não servirão nesse caso. Você deve adicionar aspas em cada caminho e também colocar todo o comando entre aspas:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
sakra
fonte
4
Sim, todos os caminhos devem ser colocados entre aspas. Além disso, todo o comando teve que ser encerrado novamente por outro par de aspas. Agora funciona! Obrigado!
Levanta-se
@sakra também não funciona para mim. "" C: \ Program Files \ WinRAR \ WinRAR.exe "a "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -m5 "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak""
MonsterMMORPG
3
@MonsterMMORPG prefixa a linha comcmd /C
sakra
@sakra Eu quero excluir o arquivo com o nome com espaços CEEMEA & LATAM.doc. O que devo fazer? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
funcionou para mim, mas sem as aspas externas: "C: \ Arquivos de programas (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090
84

Acabei de descobrir que, para um caso em que o caminho envolve o uso de caracteres de espaço em branco, por exemplo, quando preciso acessar o aplicativo, xyzcujo local é:

C:\Program Files\ab cd\xyz.exe

Para executá-lo no prompt do cmd do Windows, você precisa usar

C:\"Program Files"\"ab cd"\xyz.exe

ou

"C:\Program Files\ab cd\xyz.exe"
Mithil D
fonte
Tentei fazer isso, mas não parece funcionar no meu caso: python "" C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ sqs-poller \ node_modules \ map-checker \ python \ unit_test.py "-d" C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o" C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case "-o2" C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Test Case \ testcase_results.csv "" -l "C: \ Arquivos de programas (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP "-restore". pode ajudar?
hafizan
24

Se as aspas duplas não resolverem o problema, tente, por exemplo

dir /X ~1 c:\

para obter uma lista de arquivos alternativos ou nomes de diretório. Saída de exemplo:

11/09/2014 12:54 AM             8,065  DEFAUL~1.XML Default Desktop Policy.xml
06/12/2014  03:49 PM    <DIR>          PROGRA~1     Program Files 
10/12/2014  12:46 AM    <DIR>          PROGRA~2     Program Files (x86)

Agora use o arquivo curto de 8 caracteres ou o nome da pasta na 5ª coluna, por exemplo, PROGRA ~ 1 ou DEFAUL ~ 1.XML, em seus comandos. Por exemplo:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 
rob2universe
fonte
Esta é a maneira mais fácil. Sem aspas duplas mucky-muck envolvido.
Dave Anderson
Você sabe que a versão 8.3 curta é uma opção NTFS e pode ser desativada? Não confie nisso.
Zan Lynx
11

Coloque os caminhos que contêm espaços entre aspas duplas.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
JAB
fonte
Então o problema reside em qual Rar.exerealmente é a sintaxe do argumento . Você pode estar usando incorretamente. Talvez tente "D:\Hello 2\"ou em "D:\Hello 2"vez de "D:\Hello 2\*.*"?
JAB de
cmd / C "C: \ Arquivos de programas (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (Não tem espaços e está funcionando) mas como fazer lidar com espaços?
faressoft
@JAB se você precisar excluir arquivo com nome com espaços como CEEMEA & LATAM.doc. O que deveria ser? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
10

Tente fornecer nomes de caminhos complexos entre aspas (e inclua extensões de arquivo no final para arquivos).

Para arquivos:

call "C:\example file.exe"

Para Diretório:

cd "C:\Users\User Name\New Folder"

O CMD interpreta o texto com aspas duplas ("xyz") como uma string e o texto entre aspas simples ('xyz') como um comando. Por exemplo:

FOR %% A em ('dir / b / s * .txt') do ('comando')

FOR %% A em ('dir / b / s * .txt') do (echo "%% A")

E uma coisa boa, cmd não é * sensível a maiúsculas e minúsculas como o bash. Portanto, "Novo fiLE.txt" e "novo arquivo.TXT" são semelhantes a ele.

* Nota: As variáveis ​​%% A no caso acima diferenciam maiúsculas de minúsculas (%% A não é igual a %% a).

Vaisak Mohan
fonte
Os sublinhados nos nomes dos arquivos contam? Como 'nome_do_arquivo' vs 'nome do arquivo'
SqueakyBeak
8

Prefiro incluir o comando em ()que é válido, o batchque torna a leitura um pouco mais fácil:

cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")
Dan
fonte
3
set "CMD=C:\Program Files (x86)\PDFtk\bin\pdftk"
echo cmd /K ""%CMD%" %D% output trimmed.pdf"
start cmd /K ""%CMD%" %D% output trimmed.pdf"

isso funcionou para mim em um arquivo em lote

James Brown
fonte
2

Basta adicionar aspas

Exemplo: "C: \ Usuários \ Nome do usuário"

Espero que tenha sido resolvido!

Patrick Prakash
fonte
7
A mesma coisa já foi dita meia dúzia de vezes. Que valor extra isso adiciona?
JJJ
0

Spaces in the Commend Prompt (em uma linha de código de comando VBA Shell)

Eu tive um problema muito semelhante que acabou sendo um espaço no prompt de comando ao automatizar via VBA para obter o conteúdo da janela de comando em um arquivo de texto. Este Tópico foi um dos muitos que peguei ao longo do caminho e que não me trouxe a solução.

Portanto, isso pode ajudar outras pessoas com um problema semelhante: Como a sintaxe com aspas é sempre difícil de acertar, acho que mostrar alguns exemplos específicos é sempre útil. O problema adicional que você obtém ao usar o prompt de comando no VBA por meio do Shell é que a linha de código geralmente não apresenta erros quando algo dá errado: na verdade, um piscar da janela preta de recomendação leva a pensar que algo foi feito.

Por exemplo ... digamos que eu tenho uma pasta, com um arquivo de texto como em

C: \ Alans Folder \ test1.txt ( https://imgur.com/FELSdB6 )

O espaço lá no nome da pasta dá o problema.

Algo assim funcionaria, supondo que a pasta, AlansFolder, exista

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub

Isso não vai funcionar. (Não haverá erro).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub

Incluir pares de citações no caminho fará com que funcione

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub

(Aliás, se o arquivo texto não existir, ele será feito).

Com o benefício da percepção tardia, podemos ver que minha solução se relaciona aproximadamente com algumas já fornecidas.

Convertendo essa linha de código em um comando fornecido manualmente, teríamos

ipconfig /all > "C:\Alans Folder\test1.txt"

Isso parece funcionar

Isso também funciona

ipconfig /all > C:\AlansFolder\test1.txt

Isso não

ipconfig /all > C:\Alans Folder\test1.txt

Esta forma final também funciona e se relaciona com a solução de sacra…. ” Você deve adicionar aspas em cada caminho e também colocar todo o comando entre aspas “… ..

cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Alan Elston
fonte
-3

Pode resolver este problema por cd comando , este comando entende espaços sem aspas duplas e você pode chamar qualquer programa desta forma por exemplo:

C: \ Windows \ system32> cd c: \ Arquivos de programas \ MongoDB \ Server \ 3.2 \ bin

c: \ Arquivos de programas \ MongoDB \ Server \ 3.2 \ bin> prompt de comando mongo agora chame mongo.exe

Karen
fonte