172

On Windows XP, can I run a batch (.bat or .cmd) file, via a shortcut, without a "black window"?

Hennes
  • 65,804
  • 7
  • 115
  • 169
dugres
  • 1,875

9 Answers9

112

Save the following as wscript, for instance, hidecmd.vbs after replacing "testing.bat" with your batch file's name.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

The second parameter of oShell.Run is intWindowStyle value indicating the appearance of the program's window and zero value is for hidden window.

The reference is here http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx

59

This is just a simplification of Shaji's answer. You can run your batch script through a VBScript (.vbs) script like this:

HideBat.vbs

CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

This will execute your batch file with no command window shown.

greatwolf
  • 2,128
29

Just to expand on the "Use Windows Scripting" answers (which I consider best because it's built-in already) here's how to do it by using a single wrapper script and passing the name of the "real" batch file as a parameter. Additional parameters will be passed on to the batch file.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

So e.g. save the above file as NoShell.vbs somewhere then call:

NoShell.vbs c:\foo\my_batch_file.bat

Finally, if you're looking to run this from somewhere that doesn't understand the .vbs file (such as an "External Tools" in Visual Studio), you'll want to call C:\Windows\System32\wscript.exe with the vbs file as its first parameter and your batch file as the second.

Tobias J
  • 1,352
18

Use start with the '/B' option. For example:

@echo off
start /B go.bat
zaf
  • 569
12

You can change the properties of the shortcut to run minimized.

To run it completely invisibly you'll need something else, like Windows Scripting.

ale
  • 3,410
10

Simple solution, without using any extra programs.

  1. Create the batch file you want to execute and test it.
  2. Create a shortcut for it.
  3. Edit the properties of the shortcut: in the Shortcut tab, choose Run Minimized. Assign a hot key to it and you're done!

Good luck!

Willem
  • 151
7

Free GPL open source "Create Hidden Process"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials, and probably most other virus/malware scanners will treat the executable, chp.exe, as a virus because it hides whatever program you specify from displaying a window or a task bar button, just like viruses do.

It's not a virus. It doesn't hide the target process from appearing in task manager for example. And of course the source code is included so you can see that it's very small and doesn't do anything but run whatever program you give it.

You don't even have to trust that the included chp.exe really was built from that source. You can go ahead and discard the included chp.exe and compile your own from the source, and all the necessary tools to do so are even free and downloadable.


You can also just make a shortcut to the .bat or .cmd file, then right-click on the shortcut, Properties, Shortcut tab, Run: Minimized. Then in scheduled tasks, use the shortcut instead of the .bat/.cmd file directly. That will prevent a window from popping up, but a taskbar button will still appear.

bkw
  • 79
7

You can use window scripting such as AutoIt.

As an example, just write this to the AutoIt script editor. It's fairly simple

Run("C:\test\batchfile.bat", "", @SW_HIDE)

If you want to run it in a loop,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

Compile it as .exe - and you are done.


Likewise, in AutoHotkey:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 
endolith
  • 7,704
6

Use Hidden Start (costs $20)

Hidden Start - Run Applications and Batch Files without a Console Window or UAC Prompt

Console applications and batch files are regularly run at Windows startup or in a schedule. The main inconvenience of this is that each application opens a console window that flickers on the screen. Hidden Start (or Hstart) is a lightweight command line utility that allows you to run console applications and batch files without any window in the background, handle UAC privilege elevation under Windows 7 and Vista, start multiple commands in parallel or synchronously, and much more.

enter image description here

Kyle A
  • 193