This is a batch file in Windows.
Here is my .bat file
@echo off copy "C:Remoting.config-Training" "C:Remoting.config" "C:ThirdParty.exe"
This works fine except the .bat file leaves the command window open the whole time the “ThirdParty” application is running.
I need the command window to close.
I would use the short-cut for the application but I must be able to run this copy command first (it actually changes which data base and server to use for the application).
The ThirdParty application does not allow the user to change the source of the db or the application server.
We’re doing this to allow users to change from a test environment to the production environment.
start works for me:
@echo off copy "C:Remoting.config-Training" "C:Remoting.config" start C:ThirdParty.exe
EDIT: Ok, looking more closely,
start seems to interpret the first parameter as the new window title if quoted. So, if you need to quote the path to your ThirdParty.exe you must supply a title string as well.
:: Title not needed: start C:ThirdParty.exe :: Title needed start "Third Party App" "C:Program FilesVendorThirdParty.exe"
.vbs file with this code:
.vbs will run
Works fine for me.
@echo off copy "C:Remoting.config-Training" "C:Remoting.config" start C:ThirdParty.exe exit
start works fine, unless you are using a scripting language. Fortunately, there’s a way out for Python – just use
pythonw.exe instead of
:: Title not needed: start pythonw.exe application.py
In case you need quotes, do this:
:: Title needed start "Great Python App" pythonw.exe "C:Program FilesVendorAppapplication.py"
Great tip. It works with batch files that are running a java program also.
start javaw -classpath "%CP%" main.Main
You might be interested in trying my silentbatch program, which will run a
.cmd script, suppress creation of the Command Prompt window entirely (so you won’t see it appear and then disappear), and optionally log the output to a specified file.
Or you can use:
Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1
If %1 is a file then it is passed to your executable. For example in
notepad.exe foo.txt %1 is “foo.txt”.
/b parameter of the start command does this:
Starts an application without opening a new Command Prompt window. CTRL+C handling is ignored unless the application enables CTRL+C processing. Use CTRL+BREAK to interrupt the application.
Which is exactly what we want.
I haven’t really found a good way to do that natively, so I just use a utility called hstart which does it for me. If there’s a neater way to do it, that would be nice.
Using Windows API we can start new process, a console application, and hide its “black” window. This can be done at process creation and avoid showing “black” window at all.
The process is a console application that is being run without a console window. Therefore, the console handle for the application is not set. This flag is ignored if the application is not a console application
hide-win32-console-window is similar to Jamesdlin’s silentbatch program.
There is open question: what to do with program’s output when its window does not exist? What if exceptions happen? Not a good solution to throw away the output.
hide-win32-console-window uses anonymous pipes to redirect program’s output to file created in current directory.
batchscript_starter.exe full/path/to/application [arguments to pass on]
Example running python script
batchscript_starter.exe c:Python27python.exe -c "import time; print('prog start'); time.sleep(3.0); print('prog end');"
The output file is created in working directory named
python.2019-05-13-13-32-39.log with output from the python command:
prog start prog end
Example running command
batchscript_starter.exe C:WINDOWSsystem32cmd.exe /C dir .
The output file is created in working directory named
cmd.2019-05-13-13-37-28.log with output from CMD:
Volume in drive Z is Storage Volume Serial Number is XXXX-YYYY Directory of hide_console_projecthide-win32-console-window 2019-05-13 13:37 <DIR> . 2019-05-13 13:37 <DIR> .. 2019-05-13 04:41 17,274 batchscript_starter.cpp 2018-04-10 01:08 46,227 batchscript_starter.ico 2019-05-12 11:27 7,042 batchscript_starter.rc 2019-05-12 11:27 1,451 batchscript_starter.sln 2019-05-12 21:51 8,943 batchscript_starter.vcxproj 2019-05-12 21:51 1,664 batchscript_starter.vcxproj.filters 2019-05-13 03:38 1,736 batchscript_starter.vcxproj.user 2019-05-13 13:37 0 cmd.2019-05-13-13-37-28.log 2019-05-13 04:34 1,518 LICENSE 2019-05-13 13:32 22 python.2019-05-13-13-32-39.log 2019-05-13 04:55 82 README.md 2019-05-13 04:44 1,562 Resource.h 2018-04-10 01:08 46,227 small.ico 2019-05-13 04:44 630 targetver.h 2019-05-13 04:57 <DIR> x64 14 File(s) 134,378 bytes 3 Dir(s) ???,???,692,992 bytes free
Example shortcut for running .bat script
C:batchscript_starter.exe C:WINDOWSsystem32cmd.exe /C C:start_wiki.bat
Directory specified in
Start in field will hold output files.
You can create a VBS script that will force the window to be hidden.
Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("""C:Program Files (x86)McKessonHRS DistributedSwE.bat""", 0) set WshShell = Nothing
Then, rather than executing the batch file, execute the script.
run it under a different user. assuming this is a windows box, create a user account for scheduled tasks. run it as that user. The command prompt will only show for the user currently logged in.
Compile the batch file to an executable using Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e.
Use the “Invisible Window” option.
I used this to start a cmd file from C#:
Process proc = new Process(); proc.StartInfo.WorkingDirectory = "myWorkingDirectory"; proc.StartInfo.FileName = "myFileName.cmd"; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); proc.WaitForExit();
Please use this one, the above does not work. I have tested in Window server 2003.
@echo off copy "C:Remoting.config-Training" "C:Remoting.config" Start /I "" "C:ThirdParty.exe" exit
To make the command window of a .bat file that executes a .exe file exit out as fast as possible, use the line
@start before the file you’re trying to execute. Here is an example:
(insert other code here) @start executable.exe (insert other code here)
You don’t have to use other code with
So below vbscript will launch the cmd/bat file in hidden mode.
strPath = Wscript.ScriptFullName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(strPath) strFolder = objFSO.GetParentFolderName(objFile) 'MsgBox(strFolder) Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & strFolder & "a.bat" & Chr(34), 0 Set WshShell = Nothing
Now, only app window will be visible, not the cmd.exe window