Como criar arquivo em lote no Windows usando “iniciar” com caminho e comando com espaços
-
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"
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"