将 “testing.bat "替换为批处理文件的名称后,保存为wscript,例如hidecmd.vbs。
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
oShell.Run
的第二个参数是intWindowStyle
的值,表示程序窗口的外观,0值为隐藏窗口。
的参考文献在这里 http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
只是为了扩展 “使用Windows脚本 "的答案(我认为这是最好的,因为它已经内置了),下面是如何通过使用一个单一的封装脚本并传递 "真正的 "批处理文件的名称作为参数来实现的。
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
NoShell.vbs c:\foo\my_batch_file.bat
所以,例如,将上面的文件保存为NoShell.vbs
,然后调用:
&001
最后,如果你想从不懂.vbs文件的地方运行这个文件(例如Visual Studio中的 "外部工具"),你会希望用vbs文件作为第一个参数,而你的批处理文件作为第二个参数来调用C:\Windows\System32\wscript.exe
。
免费的GPL开源软件 “Create Hidden Process” http://www.commandline.co.uk/chp/
Microsoft Security Essentials,以及大多数其他病毒/恶意软件扫描器都会把chp.exe这个可执行文件当作病毒来处理,因为它可以隐藏你指定的任何程序,不显示窗口或任务栏按钮,就像病毒一样。它不会隐藏目标进程在任务管理器中出现,比如说它不会隐藏目标进程。当然也包含了源代码,所以你可以看到它的体积非常小,除了运行你给它的任何程序外,什么都不做。
你甚至不需要相信所包含的chp.exe真的是由那个源码建立的。你可以直接丢弃内含的chp.exe,从源码中编译自己的程序,所有必要的工具甚至都可以免费下载。
你也可以直接在.bat或.cmd文件上做一个快捷方式,然后在快捷方式上右键点击,属性,快捷方式选项卡,运行。最小化。然后在计划任务中,直接使用快捷方式代替.bat/.cmd文件。这样可以防止弹出窗口,但任务栏按钮仍然会出现。
你可以使用像AutoIt这样的窗口脚本。
作为一个例子,只需在AutoIt脚本编辑器中写下这样的内容。这很简单
Run("C:\test\batchfile.bat", "", @SW_HIDE)
如果你想循环运行,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
编译成.exe就可以了。