程序启动后,如何从batch file运行程序而不打开控制台?

目前我的batch file如下所示:

myprogram.exe param1 

程序启动,但DOS窗口仍然打开…我怎么能closures它?

您可以使用exit关键字。 以下是我的一个batch file的示例:

 start myProgram.exe param1 exit 

使用start命令来防止batch file等待程序。 只要记得在“开始”之后在你想要运行的程序前面放一个空的双引号。 例如,如果要从批处理命令运行Visual Studio 2012,请执行以下操作:

 Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" 

注意开始后双引号。

看看START命令,你可以这样做:

 START rest-of-your-program-name 

例如,这个batch file将等到记事本退出:

 @echo off notepad c:\test.txt 

但是,这不会:

 @echo off start notepad c:\test.txt 

从我自己的问题 :

 start /b myProgram.exe params... 

如果您从现有的DOS会话启动该程序,则会工作。

如果没有,请调用一个VB脚本

 wscript.exe invis.vbs myProgram.exe %* 

Windows脚本宿主运行()方法需要:

  • intWindowStyle:0意味着“不可见的窗口”
  • bWaitOnReturn:false表示您的第一个脚本不需要等待第二个脚本完成

这里是invis.vbs:

 set args = WScript.Arguments num = args.Count if num = 0 then WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>" WScript.Quit 1 end if sargs = "" if num > 1 then sargs = " " for k = 1 to num - 1 anArg = args.Item(k) sargs = sargs & anArg & " " next end if Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False 

你应该试试这个。 它没有窗口启动程序。 它实际上闪烁了一秒,但相当快地消失。

 start "name" /B myprogram.exe param1 

当我尝试从batch file运行java类时,这是唯一对我有用的东西:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

您可以按照您的项目需要自定义start命令,方法如下:

 Syntax START "title" [/Dpath] [options] "command" [parameters] Key: title : Text for the CMD window title bar (required) path : Starting directory command : The command, batch file or executable program to run parameters : The parameters passed to the command Options: /MIN : Minimized /MAX : Maximized /WAIT : Start application and wait for it to terminate /LOW : Use IDLE priority class /NORMAL : Use NORMAL priority class /HIGH : Use HIGH priority class /REALTIME : Use REALTIME priority class /B : Start application without creating a new window. In this case ^C will be ignored - leaving ^Break as the only way to interrupt the application /I : Ignore any changes to the current environment. Options for 16-bit WINDOWS programs only /SEPARATE Start in separate memory space (more robust) /SHARED Start in shared memory space (default) 

如何解决“空间问题”和地方依赖:

 @echo off cd "C:\Program Files\HeidiSQL" start heidisql.exe cd "C:\Program Files (x86)\Google\Chrome\Application" start chrome.exe exit 

我的解决scheme,从GUI做到这一点:

  1. 为要运行的程序创build一个快捷方式;

  2. 编辑快捷方式的属性;

  3. TARGET字段更改为%COMSPEC% /C "START "" "PROGRAMNAME"" ;

  4. RUN字段更改为最小化。

准备! 看看你喜欢它…

PS:程序参数可以插在两个最后的引号之间; PROGRAMNAMEstring可以是文件名,相对path或绝对path – 如果您放入绝对path并擦除驱动器号和分号,那么无论主机分配给它什么字母,这都可以在拇指驱动器中工作。 ..(另外,如果将快捷方式放在同一个文件夹中,并在PROGRAMNAME的程序文件名PROGRAMNAME加上%CD%variables,则path将始终匹配;同样的技巧可以在START IN字段中使用)。

如果这个batch file是你想按计划运行或者总是运行的; 您可以使用Windows日程安排工具,并且在启动batch file时不会在窗口中打开。

要打开Task Scheduler

  • 开始 – >运行/search – > 'cmd'
  • 键入taskschd.msc – >input

从右侧,点击Create Basic Task然后按照菜单。

希望这可以帮助。

这是我的首选解决scheme。 这是从一个类似的问题的答案 。

使用VBS脚本来调用batch file:

 Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0 Set WshShell = Nothing 

将上面的行复制到一个编辑器中,并用.VBS扩展名保存该文件。

我有这个问题,下面的工作对我来说:

 run myprogram.exe param1