2008-11-27 50 views

回答

135

您可以使用exit关键字。这是从我的批处理文件中的一个例子:

start myProgram.exe param1 
exit 
+16

注意这一点,如果您正在使用批处理文件控制台交互,而不是仅仅双击将没有好东西。通常几乎没有必要将`exit`放入批处理文件中。 – Joey 2011-04-19 07:34:36

+21

我在Win8中试过这个命令。我不确定它是否不同,但请注意,您必须为其提供一个Window标题作为第一个参数。当我按照Patrick描述的方式运行它时,它只会打开一个带有“myProgram.exe”作为窗口标题的新命令提示符:“start”VPN“”C:\ Program Files(x86)\ Cisco \ Cisco AnyConnect安全移动Client \ vpnui.exe“` – 2013-05-01 06:39:30

+3

请注意,如果您的命令包含空格并将其放入引号中,则必须在其之前添加一个额外的带引号的参数,因为START会将第一个带引号的参数解释为窗口名称,而只将下面的第二个参数作为命令名称。 – 2017-04-12 14:51:28

50

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

START rest-of-your-program-name 

例如,该批处理文件将等到记事本退出:

@echo off 
notepad c:\test.txt 

然而,这并不:

@echo off 
start notepad c:\test.txt 
18

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

start "name" /B myprogram.exe param1 
+4

``title'`选项很重要。如果程序的路径包含空格,则必须用引号括起来,因此我们必须添加`“title”`来避免失败。 – 2013-01-12 13:50:56

26

从我own question

start /b myProgram.exe params... 

的作品,如果你开始从现有DOS会话程序。

如果不是,则调用VB脚本

wscript.exe invis.vbs myProgram.exe %* 

Windows Script Host Run() method需要:

  • intWindowStyle:0表示 “无形窗口”
  • bWaitOnReturn:虚假意味着您的第一个脚本不需要等待你的第二个脚本完成

这里是invi s.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 
+1

+1有一个更简单的方法,但这是唯一对我有效的答案。 – 2012-03-06 18:49:20

0

我的解决办法从GUI做:

  1. 创建一个快捷方式,你要运行的程序;

  2. 编辑快捷键的属性;

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

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

准备就绪!看看你喜欢它...PS:可以在两个最终引号之间插入程序参数; PROGRAMNAME字符串可以是文件名,相对路径或绝对路径 - 如果您放入绝对路径并擦除驱动器号和分号,则无论主机分配给它什么字母,这都可以在拇指驱动器中工作。 ..(另外,如果将快捷方式放在同一个文件夹中,并在PROGRAMNAME前加上%CD%变量,路径将始终匹配;同样的技巧可用于START IN字段中)。

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) 
193

使用start命令可防止批处理文件等待程序。只需记住在“开始”之后在您想要运行的程序前放置一个空的双引号。 例如,如果你想从运行一个批处理命令的Visual Studio 2012:

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

通知开始后双引号。

0

如果此批处理文件是您想要按计划或始终运行的;您可以使用Windows日程安排工具,并且它在启动批处理文件时不会在窗口中打开。

要打开Task Scheduler

  • 开始 - >运行/搜索 - >'cmd'
  • 类型taskschd.msc - >进入

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

希望这会有所帮助。

10

如何解决“空间的问题”和本地依赖性:

@echo off 
cd "C:\Program Files\HeidiSQL" 
start heidisql.exe 

cd "C:\Program Files (x86)\Google\Chrome\Application" 
start chrome.exe 

exit 
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扩展名的文件。

0

我是有这个问题,并为我下面的工作:

run myprogram.exe param1 
相关问题