Qual é a diferença entre os seguintes scripts cmd?

10

Eu tentei iniciar vários programas por meio de um arquivo em lote e encontrei problemas, mas isso aconteceu no passado.

Sou relativamente novo em scripts e linhas de comando e essa seria 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 neste?)

este também funciona

cd "FOO_DIR"
start FOO.exe

mas isso não acontece

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)

(sistema operacional Windows 7 x 64)

    
por Mr. Smith 11.03.2014 / 08:14

2 respostas

17
Start Chrome

Este funciona, porque o executável do Chrome está localizado em uma pasta que está na variável de ambiente PATH . start procura por programas em todas as pastas dessa variável. A variável de ambiente PATHEXT contém uma lista de extensões de arquivo para procurar e como .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 título.

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

start "" "FOO_DIR\FOO.exe"
    
por 11.03.2014 / 09:59
5

Tente adicionar "title" ou pelo menos "" após start da seguinte forma:

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 parâmetro title para a nova janela cmd .

Também ajuda a consultar a referência de comando (link)

    
por 11.03.2014 / 09:39