Questão Qual é a diferença entre os seguintes scripts cmd?


Eu tentei lançar vários programas através de um arquivo em lotes e encontrou problemas, mas isso está no passado.

Eu sou relativamente novo para scripts e linhas de comando e esta seria a minha pergunta: Qual é a diferença entre os seguintes scripts cmd?

Este é aceito

Start Chrome

(Eu estou supondo aqui que alguns programas instalados são reconhecidos pelo título, mesmo que o dir não é onde o chrome.exe é o programa ainda lança, chaves de registro desempenham um papel nisso?)

este também funciona

cd "FOO_DIR"
start FOO.exe

no entanto estes não

start "FOO_DIR\FOO.exe"

(abre uma nova janela sem iniciar o FOO.exe)

start /B "FOO_DIR\FOO.exe"

(escreve novamente o texto dos direitos autorais e não faz mais nada)

(OS Windows 7 x64)


10


origem




Respostas:


Start Chrome

Este funciona, porque o executável do Chrome está localizado em uma pasta que está no PATH variável de ambiente. start procura programas em todas as pastas dessa variável. A variável de ambiente PATHEXT contém uma lista de extensões de arquivos para procurar e .exe está contido por padrão, você não precisa escrever chrome.exe.


start "FOO_DIR\FOO.exe"

Isso não funciona, porque start usará seu primeiro argumento como o título da janela se for citado. Então, isso abrirá um novo CMD com "FOO_DIR\FOO.exe" como seu título.

Para contornar isso, você pode simplesmente adicionar um argumento de título vazio antes de seu comando:

start "" "FOO_DIR\FOO.exe"

17



Além disso, AFAIR, o título é obrigatório ao lançar executáveis ​​com opções de linha de comando - abstrask
Não é isso start espera um título como seu primeiro argumento (caso contrário, start chrome não funcionaria), é isso E se seu primeiro argumento é citado, ele espera que seja um título. - jamesdlin
@jamesdlin ah, a documentação sobre isso é um pouco vago, obrigado. Eu editei a resposta de acordo - crater2150


Tente adicionar "title" ou pelo menos "" depois de start como isso:

start "title" "FOO_DIR\FOO.exe"

ou

start "title" /B  "FOO_DIR\FOO.exe"

A causa raiz do problema é que o primeiro argumento em "" aspas é interpretado como um title parâmetro para novo cmd janela.

Também ajuda a olhar para a referência de comando (ligação)


5



Obrigado, isso esclareceu a diferença. E com o primeiro eu acho que "arquivos não-executáveis ​​podem ser invocados através de sua associação de arquivos apenas digitando o nome do arquivo como um comando." é a razão pela qual o nome é suficiente ... (não tenho certeza) - Mr. Smith
Se você está falando sobre o seu primeiro exemplo com start chrome Eu acredito que chamando chrome funciona, porque é uma entrada no registro em algum lugar aqui: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Caminhos App Se você procurar chrome.exe você provavelmente encontrará a entrada contendo caminho completo para executável. - Art Gertner