2014-04-23 8 views
5

Su un Windows 7, ho un file eseguibile, ad esempio immutableProg.exe, che desidero chiamare 3 volte con determinati parametri. Questo viene fatto dal file batch myBatch.bat.Come scoprire se un file batch è stato aperto con doppio clic o tramite riga di comando

Contenuto myBatch.bat:

immutableProg.exe -a 
immutableProg.exe -b 
immutableProg.exe -c 

L'eseguibile immutableProg.exe ha uno speciale interruttore --keep che ferma l'eseguibile di tornare fino a quando un utente preme un tasto. Ora voglio aggiungere l'opzione --keep se e solo se il mio lotto myBatch.bat ottenuto doppio clic come:

immutableProg.exe -a 
immutableProg.exe -b 
immutableProg.exe -c --keep 

Non deve essere aggiunto se un utente chiama il batch da linea di comando.

La domanda: Come posso scoprire (dalla vista del mio batch) se è stata aperta da un doppio clic o dalla riga di comando?

La modifica del comportamento predefinito di immutableProg.exe non è purtroppo un'opzione, né è necessario fornire al file batch un parametro aggiuntivo dalla riga di comando.

+1

http://stackoverflow.com/questions/5859854/detect-if-bat-file-is-running-via-double-click-or-from-cmd-window – SachaDee

risposta

7

%cmdcmdline% fornisce la riga di comando esatta utilizzata per avviare Cmd.exe corrente.

Quando viene avviato da una console di comandi, questa variabile è "%SystemRoot%\system32\cmd.exe".

Quando lanciata da Explorer (fa doppio clic) questo var è cmd /c ""{full_path_to_the_bat_file}"

2

Per utilizzare effettivamente le informazioni in risposta di haxtbh, si può fare quanto segue. Non è infallibile, ma di solito funziona bene. Occorrerebbe uno scenario insolito per dare una falsa lettura.

echo %cmdcmdline%|find /i """%~f0""">nul && echo doubleClick || echo console launch