2008-11-27 82 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 
相關問題