簡體   English   中英

在提示符下編寫批處理Windows命令但不執行

[英]batch windows command written in prompt but no execution

為了避免重復執行太多任務,我正在設置一個批處理文件(在WINDOWS 10中)。 它會向特定目錄打開多個CMD PROMPT並啟動命令。

在一種情況下,我希望打開CMD PROMPT,轉到特定目錄並在不啟動的情況下在PROMPT中設置COMMAND。 然后,只要以后需要,我只需單擊ENTER即可啟動該命令。

這是我的代碼:

setlocal ENABLEEXTENSIONS
set CordovaProjPath="C:\MyPath\"
start cmd /k "cd /d %CordovaProjPath% && cordova build android"

使用此代碼,它將啟動命令“ cordova build android”。

如果我使用start cmd /k "cd /d %JCACordovaProjPath%而不是start cmd /k "cd /d %JCACordovaProjPath% && cordova build android" 它將為我提供PROMPT:” C:\\ MyPath>“,我d想在其后寫:“ cordova build android”,而無需啟動命令。

任何想法?

您會這​​樣嗎?

@Echo Off
Set "CordovaProjPath=C:\MyPath"
Set "CommandToRun=cordova build android"
Start "%CommandToRun%" Cmd /K "Cd /D %CordovaProjPath%&Echo %CommandToRun%&Pause>Nul&%CommandToRun%"

下面是一個替代方法,它可能允許您使用替代雙引號方法:

@Echo Off
Set CordovaProjPath="C:\MyPath"
Set CommandToRun="cordova build android"
Start %CommandToRun% Cmd /K "(Cd /D %CordovaProjPath%)&(Echo %CommandToRun%)&(Pause>Nul)&(%CommandToRun%)"

為了提供可重復執行(如注釋中所述),您可以使用“ quit”選項將相關命令置於循環中:

@Echo Off
    setlocal
    Set "CordovaProjPath=C:\MyPath"
    Set "CommandToRun=cordova build android"
:loop
    Cd /D %CordovaProjPath%
    Echo %CommandToRun%
    set QUIT=
    set /p QUIT=Press ENTER to run command or 'Q' to quit:
    if /i "%QUIT%" == "Q" goto :eof
    %CommandToRun%
    goto :loop

與原始命令不同,它在與重復循環相同的命令窗口中運行目標命令。 根據相關命令的作用,這可能會更具吸引力(更少的窗口彈出)。 但是,某些命令可能會導致主窗口關閉。 在這種情況下,您可以使用兩種不同的方法之一恢復在其自己的窗口中運行命令。 在每種情況下,請替換以下行:

    ...
    %CommandToRun%
    ...

在自己的窗口中運行並保持打開狀態

    ...
    start "%CommandToRun%" /wait cmd /k %CommandToRun%
    ...

使用/k將在目標命令運行后使命令提示符窗口保持打開狀態-如果您需要查看命令的輸出並且它沒有自己的暫停,這可能是合適的。

在自己的窗口中運行,然后關閉

    ...
    start "%CommandToRun%" /wait cmd /c %CommandToRun%
    ...

使用/c表示命令提示符將在目標命令運行后關閉。 如果您不需要查看命令的輸出,或者有自己的暫停,這可能是合適的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM