How do I minimize the command prompt from my bat file
I have this bat file and I want to minimize the cmd window when I run it:
@echo off
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
ruby C:\leads\ssh\put_leads.rb
Basically I want the command window minimized immediately. Any ideas on how to do this?
There is a quite interesting way to execute script minimized by making him restart itself minimised. Here is the code to put in the beginning of your script:
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
How it works
When the script is being executed IS_MINIMIZED
is not defined (if not DEFINED IS_MINIMIZED
) so:
-
IS_MINIMIZED is set to 1:
set IS_MINIMIZED=1
. -
Script starts a copy of itself using start command
&& start "" /min "%~dpnx0" %*
where:-
""
- empty title for the window. -
/min
- switch to run minimized. -
"%~dpnx0"
- full path to your script. -
%*
- passing through all your script's parameters.
-
Then initial script finishes its work:
&& exit
.
For the started copy of the script variable IS_MINIMIZED
is set by the original script so it just skips the execution of the first line and goes directly to the script logic.
Remarks
- You have to reserve some variable name to use it as a flag.
- The script should be ended with
exit
, otherwise the cmd window wouldn't be closed after the script execution. -
If your script doesn't accept arguments you could use argument as a flag instead of variable:
if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit
or shorterif "%1" == "" start "" /min "%~f0" MY_FLAG && exit
Use the start
command, with the /min
switch to run minimized. For example:
start /min C:\Ruby192\bin\setrbvars.bat
Since you've specified a batch file as the argument, the command processor is run, passing the /k
switch. This means that the window will remain on screen after the command has finished. You can alter that behavior by explicitly running cmd.exe
yourself and passing the appropriate switches if necessary.
Alternatively, you can create a shortcut to the batch file (are PIF files still around), and then alter its properties so that it starts minimized.
The only way I know is by creating a Windows shortcut to the batch file and then changing its properties to run minimized by default.
Using PowerShell you can minimize from the same file without opening a new instance.
powershell -window minimized -command ""
Also -window hidden
and -window normal
is available to hide completely or restore.
source: https://stackoverflow.com/a/45061676/1178975