I have a program which spawns a filter command (batch file) and does it by
running CMD.exe in an open window which has the annoying habit of coming
to the front and taking focus.
I need a tool to push the command prompt to the background and better to
minimize it -- my intent is to run it as the first line of the batch.
Is there a better way? (Other than fixing the stupid program which calls
it which I cannot do directly.)
You can rewrite the main Batch file as a Subroutine shell, and have
the Batch file recall itself in a minimized window before passing control
to the main code and closing the initial window.
Patch your own code into this outline (where I've placed the relevant
ECHO command):
Lines that don't begin with two spaces have wrapped accidentally
====Begin cut-and-paste (omit this line)
@ECHO OFF
IF [GOTO:]==[%1] GOTO %2 {Subroutine-Handler}
start /min "CMD window" "%0" GOTO: _MAIN %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
@ECHO OFF
CLS
EXIT
GOTO EOF {=Subroutine-section-below=}
:_MAIN
FOR %%C IN (1 2 3) DO SHIFT
ECHO. Your Batch code goes here
:EOF {End-of-file}
====End cut-and-paste (omit this line)
Simulated Win2000 for study/demo use. Cut-and-paste as Batch text file.
Batch file troubleshooting:
http://www.allenware.com/find?UsualSuspects
The outline passes any Batch parameters (up to %9) to the _MAIN
child shell, and restores their normal positions.
For an explanation of the unusual combo of lines:
@ECHO OFF
CLS
EXIT
to close the initial window, see our Usual Suspects page
http://www.allenware.com/find?UsualSuspects
and look under item
"Window stays open" MS-DOS window doesn't close (or closes too soon)