2014-04-23 12 views
5

geöffnet wurde. Auf einem Windows 7 habe ich eine ausführbare Datei, sagen immutableProg.exe, die ich 3 mal mit bestimmten Parametern aufrufen möchte. Dies geschieht durch die Batch-Datei myBatch.bat.Wie man herausfinden kann, ob eine Batch-Datei durch Doppelklick oder durch die Befehlszeile

Inhalt des myBatch.bat:

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

Die ausführbare immutableProg.exe hat einen speziellen --keep Schalter, der die ausführbare Datei stoppt Rückkehr, bis der Benutzer eine Taste trifft. Jetzt möchte ich die --keep Schalter hinzufügen, wenn und nur wenn meine Batch myBatch.bat bekam doppelt angeklickt wie:

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

Es soll nicht hinzugefügt werden, wenn ein Benutzer die Charge von Command aufruft.

Die Frage: Wie kann ich herausfinden (aus der Sicht meines Stapels), ob es durch einen Doppelklick oder von der Befehlszeile aus geöffnet wurde?

Das Ändern des Standardverhaltens der immutableProg.exe ist leider keine Option, auch nicht, um der Batch-Datei einen zusätzlichen Parameter von der Kommandozeile zu geben.

+1

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

Antwort

7

%cmdcmdline% gibt die genaue Befehlszeile zum Starten der aktuellen Cmd.exe.

Wenn diese Variable über eine Befehlskonsole gestartet wird, ist diese Variable "%SystemRoot%\system32\cmd.exe".

Wenn aus dem Explorer (Doppel geklickt haben) ins Leben gerufen diese var ist cmd /c ""{full_path_to_the_bat_file}"

2

tatsächlich Um die Informationen in haxtbh Antwort zu verwenden, können Sie die folgenden Aktionen aus. Es ist nicht narrensicher, aber es funktioniert normalerweise gut. Es würde ein ungewöhnliches Szenario erfordern, um eine falsche Lesart zu geben.

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