Usando o comando “start” com parâmetros passados ​​para o programa iniciado

224

Eu tenho uma máquina virtual no Virtual PC 2007.

Para iniciá-lo na área de trabalho, tenho o seguinte comando em um arquivo em lotes:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

Mas isso deixa um prompt dos na máquina host até que a máquina virtual seja desligada e eu saio do console do Virtual PC. Isso é irritante.

Então, mudei meu comando para usar o comando START, em vez disso:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Mas engasga com os parâmetros passados ​​no Virtual PC.

START /?indica que os parâmetros realmente entram nesse local. Alguém usou o START para iniciar um programa com vários argumentos da linha de comando?

JosephStyons
fonte

Respostas:

467

START tem uma peculiaridade envolvendo aspas duplas em torno do primeiro parâmetro. Se o primeiro parâmetro tiver aspas duplas, ele será usado como o título opcional para a nova janela.

Eu acredito que o que você quer é:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Em outras palavras, dê a ele um título vazio antes do nome do programa para falsificá-lo.

Tim Farley
fonte
2
Isso está obsoleto? No Win 7 eu receboStart-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
geotheory
1
Quem teria imaginado. Apenas o número de votos positivos para sua resposta deve ser uma razão suficiente para a Microsoft corrigir essa 'peculiaridade'.
Piyush Soni
7
@geotheory Sei que este é um comentário antigo, mas no PowerShell, start é um alias para Start-Process. No cmd.exe (um pouco antiquado, mas não obsoleto), "start" é diferente. Ambos destinam-se a iniciar outros processos, mas o start é um antigo comando incorporado no cmd.
Adam Plocher
Isso me causou muita dor de cabeça. Obrigado pela solução!
Uceumern #
15

Em vez de um arquivo em lotes, você pode criar um atalho na área de trabalho.

Defina o destino para:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

e está tudo pronto. Como você não está iniciando um prompt de comando para iniciá-lo, não haverá Caixa DOS.

Ferruccio
fonte
3

Os espaços são problemas de DOSs / CMDs, portanto, você deve ir para o caminho via:

cd "c:\program files\Microsoft Virtual PC"

e, em seguida, basta iniciar a VPC via:

start Virtual~1.exe -pc MY-PC -launch

~1significa o primeiro execom "Virtual"no início. Portanto, se houver um "Virtual PC.exe"e um, "Virtual PC1.exe"o primeiro seria o Virtual~1.exee o segundo, Virtual~2.exee assim por diante.

Ou use um cliente VNC como o VirtualBox.

ghostdog21
fonte
1
Parece uma solução alternativa razoável, mas realmente não trata do problema subjacente, coberto pela resposta aceita.
Sam
1
isso não funcionará se os nomes de arquivos curtos não estiverem ativados. Eu sempre desativar nomes de arquivo 8.3 em meus sistemas
phuclv
1

Nenhuma dessas respostas funcionou para mim.

Em vez disso, tive que usar o comando Call:

Call "\\Path To Program\Program.exe" <parameters>

Não tenho certeza se isso realmente aguarda a conclusão ... o C ++ redistribuível que eu estava instalando foi rápido o suficiente para que não importasse

JustAnotherMikhail
fonte
@rene obrigado pela edição. Se adicionar mais respostas, usarei o formato do bloco de código
JustAnotherMikhail
0

A resposta em "peculiaridade" está correta e responde diretamente à pergunta. Como o TimF respondeu, como o primeiro parâmetro está entre aspas, ele é tratado como um título da janela.

Observe também que as opções do Virtual PC estão sendo tratadas como opções para o próprio comando 'start' e não são válidas para 'start'. Isso vale para todas as versões do Windows que possuem o comando 'start'.

Esse problema com o 'start' tratando o parâmetro citado como um título é ainda mais irritante do que apenas o problema postado. Se você executar isso:

start "some valid command with spaces"

Você obtém uma nova janela do prompt de comando, com o resultado óbvio para o título da janela. Ainda mais irritante, essa nova janela não herda fonte, cores ou tamanho da janela personalizados, é apenas o padrão para o cmd.exe.

BitDreamer
fonte
0

Se você deseja passar o parâmetro e o arquivo .exe na pasta de teste do c: drive

start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch

Se você não deseja passar o parâmetro e o arquivo .exe na pasta de teste do c: drive

start "" "C:\test\test1.exe" -pc My Name-PC -launch

Se você não deseja passar o parâmetro e o arquivo .exe na pasta de teste da unidade H: (Qualquer outra)

start "" "H:\test\test1.exe" -pc My Name-PC -launch

Mack
fonte
0

Se você precisar usar aspas duplas em qualquer parâmetro, poderá obter o erro "'c: \ somepath' não é reconhecido como comando interno ou externo, programa operável ou arquivo em lotes". Sugiro a solução abaixo ao usar o ponto de citação duplo: https://stackoverflow.com/a/43467194/3835640

Mustafa Kemal
fonte
0

Você pode usar aspas usando [ /D"Path"] /D apenas para especificar o caminho e não o programa path +. Parece que todo o código na mesma linha a seguir volta ao normal, o que significa que você não precisa separar o caminho e o arquivo.

    start  /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

ou:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

iniciará o IE com a página da web padrão.

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com

começa com o Bing, mas não redefine sua página inicial.

/D significa "diretório" e usar aspas está OK!

EXEMPLO ERRADO:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

dá:

ERRO " O diretório atual é inválido. "

/Ddeve ser seguido apenas por um caminho de diretório. Depois, espaço e o arquivo em lote ou programa que você deseja iniciar / executar

Testado e funciona no XP, mas o Windows Vista / 7/8 pode precisar de alguns ajustes no UAC.

-Mrbios

Mrbios
fonte
-1

/b parâmetro

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
fonte
O que esse parâmetro faz?
Azeezah M
3
@AzeezahM / b significa que uma nova janela do cmd não será aberta. Porém, isso não responde à pergunta do op.
aclave1
-4

você tentou:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"

?

Albertein
fonte
-4

Coloque o comando dentro de um arquivo em lotes e chame-o com os parâmetros.

Além disso, você já tentou isso? (Mova a cotação final para encapsular parâmetros)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"
Mark Allen
fonte
-4

Altere "Virtual PC.exe" para um nome sem espaço como "VirtualPC.exe" na pasta. Quando você escreve start "path"com "" o CMD inicia uma nova janela de cmd com o caminho como o título. Altere o nome para um nome sem espaço, escreva-o no bloco de notas e depois salve como Name.cmd ou Name.bat:

CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit

Este comando redirecionará o CMD para a pasta, inicie o VirualPC.exe, aguarde 2 segundos e saia.

Rafael Pereira
fonte
1
O que acontece se o software for atualizado? De repente, você tem um virtualpc.exe órfão.
Michael Beck