目前我的批处理文件如下所示:
myprogram.exe param1
程序启动但DOS窗口仍然打开。我怎么能关闭呢?
答案 0 :(得分:231)
使用start命令阻止批处理文件等待程序。只需记住在“开始”之后在要运行的程序前放置一个空的双引号。 例如,如果要从批处理命令运行Visual Studio 2012:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
启动后注意双引号。
答案 1 :(得分:153)
您可以使用exit关键字。以下是我的一个批处理文件中的示例:
start myProgram.exe param1
exit
答案 2 :(得分:51)
查看START命令,你可以这样做:
START rest-of-your-program-name
例如,此批处理文件将一直等到记事本退出:
@echo off
notepad c:\test.txt
然而,这不会:
@echo off
start notepad c:\test.txt
答案 3 :(得分:30)
来自我的own question:
start /b myProgram.exe params...
如果从现有的DOS会话启动程序,则有效。
如果没有,请调用vb脚本
wscript.exe invis.vbs myProgram.exe %*
Windows Script Host Run() method需要:
这是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
答案 4 :(得分:18)
你应该试试这个。它启动程序没有窗口。它实际上闪烁了一秒钟但很快就消失了。
start "name" /B myprogram.exe param1
答案 5 :(得分:18)
当我尝试从批处理文件中运行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)
答案 6 :(得分:12)
如何解决“空间问题”和本地依赖关系:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
答案 7 :(得分:0)
我的解决方案是从GUI执行此操作:
创建要运行的程序的快捷方式;
编辑快捷方式的属性;
将TARGET
字段更改为%COMSPEC% /C "START "" "PROGRAMNAME""
;
将RUN
字段更改为最小化。
就绪!看看你喜欢它......
PS:程序参数可以插入两个最终引号之间; PROGRAMNAME
字符串可以是文件名,相对路径或绝对路径 - 如果你输入绝对路径并删除驱动器号和分号,那么无论主机上有什么字母,这都可以在thumbdrive中工作分配给它...(另外,如果你将快捷方式放在同一个文件夹中,并在PROGRAMNAME
中的程序文件名前面加上%CD%
变量,路径将始终匹配;同样的技巧可用于{ {1}}字段)。
答案 8 :(得分:0)
如果您希望按计划或始终运行此批处理文件;您可以使用Windows计划工具,它在启动批处理文件时不会在窗口中打开。
打开Task Scheduler
:
'cmd'
taskschd.msc
- &gt;输入在右侧,点击Create Basic Task
并按照菜单操作。
希望这有帮助。
答案 9 :(得分:0)
这是我的首选解决方案。它取自answer到类似的问题。
使用VBS脚本调用批处理文件:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
将上面的行复制到编辑器并使用.VBS扩展名保存文件。
答案 10 :(得分:0)
我遇到了这个问题,以下内容对我有用:
run myprogram.exe param1
答案 11 :(得分:0)
已经有很多关于这个问题的答案,但是我发布这个是为了澄清一些重要的事情,尽管可能并非总是如此:
Start "C:\Program Files\someprog.exe"
在某些Windows版本中可能会引起问题,因为Start
实际上希望第一组引号是Windows标题。因此,最好的做法是先用双引号将注释或空白注释:
Start "" "C:\Program Files\someprog.exe"
或
Start "Window Title" "C:\Program Files\someprog.exe"