I have a bat file that does a bunch of things and closes the cmd window which is fine when user double clicks the bat file from explorer. But if I run the bat file from a already open cmd window as in cmd>c:\myfile.bat then I do not want the bat file to close the cmd window (END) since I need to do other things. I need bat dos command code that will do something like
if (initiated_from_explorer) then else endif
Is this possible ? thanks
Use Of Tasklist Command Click on the cmd utility icon; it opens a command-line window. Type Tasklist in it and press the enter key. This command shows all the running processes in your system.
mousio's solution is nice; however, I personally did not manage to make it work in an "IF" statement because of the double quotes in the value of %cmdcmdline%
(with or without double quotes around %cmdcmdline%
).
In constrast, the solution using %0
works fine. I used the following block statement and it works like a charm:
IF %0 == "%~0" pause
The following solution, which expands %~0
to a fully qualified path, might also work if the previous does not (cf. Alex Essilfie's comment):
IF %0 EQU "%~dpnx0" PAUSE
However, note that this solution with %~dpnx0
fails when
%USERPROFILE%
directory, and%USERNAME%
contains one or more uppercase charactersbecause... wait for it... the d
in %~dpnx0
forces your %USERPROFILE%
username to lowercase, while plain %0
does not. So they're never equal if your username contains an uppercase character. ¯\_(ツ)_/¯
[Edit 18 June 2021 - thanks to JasonXA]
You can solve this lowercase issue with case-insensitive comparison (magic /I
):
IF /I %0 EQU "%~dpnx0" PAUSE
This might be the best solution of all!
%cmdcmdline%
gives the exact command line used to start the current Cmd.exe.
"%SystemRoot%\system32\cmd.exe"
.cmd /c ""{full_path_to_the_bat_file}" "
;%0
variable in your bat file, for in this case it is always the full path to the bat file, and always enclosed in double quotes.Personally, I would go for the %cmdcmdline%
approach (not %O
), but be aware that both start commands can be overridden in the registry…
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With