Como criar arquivo em lote no Windows usando “iniciar” com caminho e comando com espaços

StackOverflow https://stackoverflow.com/questions/72671

  •  09-06-2019
  •  | 
  •  

Pergunta

Preciso criar um arquivo em lote que inicie vários aplicativos de console em um arquivo .cmd do Windows.Isso pode ser feito usando o comando iniciar.

No entanto, o comando contém um caminho.Também preciso passar parâmetros que também contenham espaços.Como fazer isso?

Por exemplo.arquivo em lote

start "c:\path with spaces\app.exe" param1 "param with spaces"
Foi útil?

Solução

Na verdade, o exemplo dele não funcionará (embora a princípio eu tenha pensado que funcionaria também).Com base na ajuda do comando Iniciar, o primeiro parâmetro é o nome da janela do Prompt de Comando recém-criada, e o segundo e o terceiro devem ser o caminho para o aplicativo e seus parâmetros, respectivamente.Se você adicionar outro "" antes do caminho para o aplicativo, ele deverá funcionar (pelo menos funcionou para mim).Use algo assim:

start "" "c:\path with spaces\app.exe" param1 "param with spaces"

Você pode alterar o primeiro argumento para o título que desejar para o novo prompt de comando.Se for criado um aplicativo do Windows, o prompt de comando não será exibido e o título não importará.

Outras dicas

Escapar do caminho com apóstrofos está correto, mas o comando start leva um parâmetro contendo o título da nova janela.Este parâmetro é detectado pelos apóstrofos ao redor, portanto seu aplicativo não é executado.

Tente algo assim:

start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Quando usei a sugestão acima, obtive:

'c:\path' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.

Acho que a segunda cotação impede a execução do comando.Depois de alguma pesquisa abaixo da solução, salve meu dia:

start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Curiosamente, parece que no Windows Embedded Compact 7 você não pode especificar uma sequência de título.O primeiro parâmetro deve ser o comando ou programa.

Você deve usar algo assim:

iniciar /d C:\Windows\System32\calc.exe

start /d "C:\Arquivos de Programas\Mozilla

Firefox" firefox.exe iniciar /d

"C:\Arquivos de Programas\Microsoft

Escritório\Office12" EXCEL.EXE

Também aconselho você a usar um editor especial de arquivos em lote - Dr. Batcher

Cercar o caminho e o argumento com espaços entre aspas, como no seu exemplo, deve servir.O comando pode precisar manipular as aspas quando os parâmetros são passados ​​para ele, mas geralmente isso não é grande coisa.

Pesquisei com sucesso e está funcionando bem para mim.Meu requisito é enviar um e-mail usando vbscript que precisa ser chamado de um arquivo em lote no Windows.Aqui está o comando exato que estou usando sem erros.

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top