程序启动后,如何从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做到这一点:
-
为要运行的程序创build一个快捷方式;
-
编辑快捷方式的属性;
-
将
TARGET
字段更改为%COMSPEC% /C "START "" "PROGRAMNAME""
; -
将
RUN
字段更改为最小化。
准备! 看看你喜欢它…
PS:程序参数可以插在两个最后的引号之间; PROGRAMNAME
string可以是文件名,相对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