Qual è la differenza tra i seguenti script cmd?


10

Ho provato ad avviare diversi programmi tramite un file batch e ho riscontrato problemi, ma è successo in passato.

Sono relativamente nuovo agli script e alle righe di comando e questa sarebbe la mia domanda: qual è la differenza tra i seguenti script cmd?

Questo è accettato

Start Chrome

(Sto indovinando che alcuni programmi installati sono riconosciuti per titolo, anche se la directory non è dove Chrome.exe è il programma che viene ancora avviato, le chiavi di registro hanno un ruolo in questo?)

anche questo funziona

cd "FOO_DIR"
start FOO.exe

tuttavia questi non lo fanno

start "FOO_DIR\FOO.exe"

(apre una nuova finestra senza avviare FOO.exe)

start /B "FOO_DIR\FOO.exe"

(scrive di nuovo il testo del copyright e non fa nient'altro)

(Sistema operativo Windows 7 x64)

Risposte:


17
Start Chrome

Questo funziona, perché l'eseguibile di Chrome si trova in una cartella che si trova nella PATHvariabile di ambiente. startcerca programmi in tutte le cartelle in quella variabile. La variabile di ambiente PATHEXTcontiene un elenco di estensioni di file da cercare e, come .exepredefinito, non è necessario scrivere chrome.exe.


start "FOO_DIR\FOO.exe"

Questo non funziona, perché startutilizzerà il suo primo argomento come titolo della finestra se viene citato. Quindi questo aprirà un nuovo CMD con "FOO_DIR\FOO.exe"come titolo.

Per aggirare questo, puoi semplicemente aggiungere un argomento di titolo vuoto prima del tuo comando:

start "" "FOO_DIR\FOO.exe"

Inoltre, AFAIR, il titolo è obbligatorio quando si lanciano file eseguibili con opzioni della riga di comando
abstrask

1
Non è che si startaspetti un titolo come primo argomento (altrimenti start chromenon funzionerebbe), è che se viene citato il suo primo argomento, si aspetta che sia un titolo.
jamesdlin,

@jamesdlin ah, la documentazione su questo è un po 'vaga, grazie. Ho modificato la risposta di conseguenza
crater2150

5

Prova ad aggiungere "title"o almeno ""dopo in startquesto modo:

start "title" "FOO_DIR\FOO.exe"

o

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

La causa principale del problema è che il primo argomento tra virgolette "" viene interpretato come titleparametro per una nuova cmdfinestra.

Inoltre aiuta a guardare il riferimento del comando (link)


Grazie, ciò ha chiarito la differenza. E con il primo penso che "I file non eseguibili possono essere richiamati attraverso la loro associazione di file semplicemente digitando il nome del file come comando". è il motivo per cui è sufficiente solo il nome ... (non ne sono sicuro)
Mr. Smith

Se stai parlando del tuo primo esempio con start chromecredo che chiamare Chrome funzioni, perché ha una voce nel registro da qualche parte qui: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths Se cerchi chrome.exe, molto probabilmente trova la voce che contiene il percorso completo dell'eseguibile.
Art Gertner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.