13

I've written a batch file that I plan on distributing to a few dozen machines. It automatically checks the working state of several devices. I recently added a "menu" at the start of the script, prompting the user to select specific items to query from a list. The list, however, is too long to see without scrolling.

Rather than refining my list, what can I add to the batch to start the Windows shell maximized? I tried to cheat and Right click the .bat -> Properties -> Change the "Run" state to "Maximized", but this option does not exist (and frankly I'd rather add this feature within the script itself).

The machines that are running the script are running Windows 7

0

4 Answers 4

20

You can try start /MAX yourscript.bat to start your script in a maximized cmd (up to Windows 7)

Edit (by Rik):

I've created a small example which shows how you could do it all in one batch-file
(without a separate launcher):

@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b

:: here comes the rest of your batch-file
echo "test"

pause

There will be a slight flicker of the original batch-file (which will exit immediately) before starting the maximized version.


Simple explanation:
If the batch is not called with the parameter max we call itself again (%0), this time maximized with the help of start /max, and with the parameter max and that way the second time its called it will skip the if-statement and continue with your commands.

Breakdown:

  • if not "%1" == "max" execute the next command only if %1 is not "max". %1 stands for the first parameter given to the batch-file. So my_batch.bat max will have max in the %1-variable. If we didn't start the batch with a max parameter we need to execute this line.
  • start /MAX start the command after it, in maximized form.
  • cmd /c execute cmd.exe and /c means exit afterwards.
  • %0 max. The %0 stands for your own batch-file name and here max is its first parameter. This means we need to skip that first if-line or else we get caught in a loop :)
  • & exit/b: The & means execute the next command simultaneous with the previous. This means we executed the start /max your batchfile and in the meantime exit the current batch.

This also means we can't call this version with any other parameters than max. If your batch-files needs a parameter to start then you'll need to do some more magic (like shifting the %1 after testing).
If that's the case let us know.

9
  • This will work, but requires creating a "launching" batch. I'm trying to reduce this to the entire operation running solely off of one file - if possible. +1
    – root
    Dec 18, 2013 at 20:21
  • 1
    @root you can however create a batch which launches itself with some crafty one-liner at the beginning of the batchfile. Something like @echo off // if not "%1"=="max" start /MAX %0 max // <rest of the batch>>. (not tested, but you can see where i am going...)
    – Rik
    Dec 18, 2013 at 20:41
  • @user2196728 I tool the liberty of adding an example to your answer where you don't need a separate launcher-batch. (hope that's alright)
    – Rik
    Dec 18, 2013 at 21:01
  • @Rik : no pb as far as what you wrote sounds good to me :) And it sounds right :) Dec 18, 2013 at 21:07
  • @user2196728 No, with echo "rest of batch" i just meant that as a placeholder. After the if not line you can include your normal batch. (i edited it to make it clearer)
    – Rik
    Dec 18, 2013 at 21:08
0

You can maximize the command prompt on during the run but you'll need two additional scripts: windowMode and getCmdPid.bat:

@echo off

call getCmdPid
call windowMode -pid %errorlevel% -mode maximized

some commands
-1

You can try mode.com but that only fullscreens it, it does not position the window:

@echo off
mode 1000

And then enter the code for your batch file.

1
  • This seems not to fullscreen the window, but just to make it very big, while leaving the upper-left corner where it was. Feb 17, 2019 at 0:12
-1

This is extremely useful, one more tweak...

To bring the commmand or batch file's window out of its minimized state to a restored state instead of maximized, i-e, to put the focus on the windows so it shows on screen I slightly modified the command...

if not "%1" == "max" start cmd /c %0 max & exit/b

Snafaru

1
  • It looks like this is sort-of an answer to a different question. Besides, why would we even need to worry about a batch file starting in a minimized window? Apr 26, 2019 at 3:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.