Como faço para escapar de espaços na linha de comando no Windows?

0

Eu tenho um problema semelhante como este Como faço para escapar de espaços na linha de comando no Windows sem usar aspas?

Mas parece que não posso usar o carets

C:\>C:\Program^ Files^ (x86)\Adobe\Reader^ 11.0\Reader\AcroRd32.exe
C:\Program Files is not recognized as an internal or external command, operable program or batch file.

cd funciona bem:

C:\>cd C:\Program^ Files^ (x86)\Adobe\Reader^ 11.0\Reader\
C:\Program Files (x86)\Adobe\Reader 11.0\Reader>

Estou chamando o Adobe Reader do aplicativo C ++ com

UniString cmd("\"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe\" ");
system(cmd.ToCStr());

Tudo bem, o Adobe Reader começou. Mas quando eu adiciono outras citações com escape para passar o caminho do argumento para o pdf

UniString cmd("\"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe\" \"");
cmd.Append("A\B with space\C\test.pdf");
cmd.Append("\"");
system(cmd.ToCStr());

Eu tenho

C:\Program is not recognized as an internal or external command, operable program or batch file. 

O que está acontecendo aqui? Por que não posso usar o carets ou aspas escapadas mais vezes?

(Nossa, eu odeio tanto as janelas)

    
por bartimar 06.02.2014 / 10:57

3 respostas

0

Eu resolvi isso:

para system () eu tive que usar duas citações de escape

UniString cmd("\"\"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe\" \"D:\Second Path\Foo\Bar\"\");
system(cmd.ToCStr());

ou melhor com WinExec ()

UniString cmd("\"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe\" \"D:\Second Path\Foo\Bar\");
WinExec(cmd.ToCStr(),SW_SHOW);
    
por 10.02.2014 / 09:16
1

Acredito que você deve usar a função CreateProcess () em vez de iniciar o programa cmd.exe e, em seguida, dizer a ele para executar o acrobat.

É mais complicado de configurar, mas você não precisa passar pela manipulação de linha de comando reconhecidamente estranha do cmd.

update: acabo de dar uma olhada rápida, já que alguém fez uma pergunta semelhante que fornece uma resposta que pode ajudar: link

    
por 06.02.2014 / 12:11
0

Coloque a string inteira entre aspas, assim: "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

    
por 10.02.2014 / 09:20