The last line in my batch file is pause
. Is there any way to add a if condition to see if the script is run within command prompt or by double clicking to execute?
Use the tty
command.
Use the -s option and check the return value.
By definition, a shell script is always going to be run in a "command prompt". But try using the SESSIONNAME
env var - it seems to NOT be present if the script was started by double-clicking instead of manually running it from a prompt.
CALL :GETMYSWITCH %CMDCMDLINE%
IF /I "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN THE EXPLORER & PAUSE
IF /I NOT "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN A DOS SESSION
:GETMYSWITCH
SET MYSWITCH=%2
I know this is a year later but for future people searching you can use
If /I "%COMSPEC%" == %CMDCMDLINE% Goto SkipPause
pause
:SkipPause
It will skip the pause block if running from the command line and pause if running from batch file.