批次程式無法正常運作!

批次程式無法正常運作!

我創建了一個批次腳本(在這裡查看完整內容)先啟動一些服務,然後啟動應用程式。應用程式完成後,批次應該會GOTO somewhere等待程式退出才能繼續。

啟動應用程式並繼續的標題:

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    IF NOT %BACK%==NULL GOTO %BACK%
    GOTO STARTAPPCONT

該標頭是從另一個標頭調用的:

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH%包含下一個標頭的名稱 - 在上述情況下為vmSTARTAPP.

如果我從新的命令提示字元視窗運行它,它可以正常工作,只是不在這批處理中。

我究竟做錯了什麼?

PS 不要將此問題參考我之前的問題。這是一個完全不同的情況。

答案1

您可以嘗試替換顯示的行嗎

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

:vmSTARTAPP
    start "Starting VMWare" /B "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

我假設您想要靜默啟動 VMWare 並繼續不間斷,理論上,這應該可以做到這一點。

start指令指示DOS 執行您傳遞給它的指令(在本例中為「C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe」),並且預設不會等待您傳遞給它的命令返回並在單獨的進程中運行它。

預設情況下,批次檔中的每一行都會按順序運行,並等待每一行執行並返回,然後再繼續下一行。該start命令透過啟動您在單獨的進程(DOS 視窗)中傳遞的程式來解決此問題,因此您的批次檔遇到此行,像平常一樣運行它,看到命令start已返回(正在創建一個新進程來運行之後)您的命令)和批次檔將繼續執行,就好像沒有發生任何意外一樣。

標題"Starting VMWare"只是一個標題,如果沒有參數/B告訴它不顯示新的 DOS 窗口,新建立的 DOS 窗口將具有該標題。標題是必要的,但也是可選的,我偶爾會在沒有標題的腳本中遇到 WTF 時刻,但那些時候更多的是例外而不是規則。

您可以在以下位置找到有關“開始”命令的更多信息http://ss64.com/nt/start.html

相關內容