2016-09-06 184 views
1

爲避免重複執行任務,我建立了一個批處理文件(在WINDOWS 10中)。它將幾個CMD PROMPT打開到特定目錄並啓動命令。批處理窗口命令寫入提示符但不執行

對於一種情況,我希望打開CMD PROMPT,轉到特定目錄並在PROMPT中設置COMMAND而不啓動它。然後,我只需點擊ENTER即可隨時啓動該命令。

這裏是我的代碼:

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

有了這個代碼,它會啓動命令 「科爾多瓦構建Android」。

如果我start cmd /k "cd /d %JCACordovaProjPath%代替start cmd /k "cd /d %JCACordovaProjPath% && cordova build android"去它給了我與提示:「C:\ mypath中>」,我想這樣寫:「科爾多瓦構建Android」背後,而無需啓動命令。

任何想法?

回答

1

爲了提供可重複執行(如在評論中提到)您可以將相關命令放在一個帶有「退出」選項的循環中:

@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將意味着在命令提示符目標命令運行後會關閉

運行。如果您不需要查看命令的輸出,或者它有自己的暫停,這可能是適當的。

+0

關於你的回答的一些反饋:對於第一種情況(只是倒數第二行的'%CommandToRun%'(CTR)),它在程序完成執行時退出。第二種情況,我使用'start%CTR%/ wait cmd/c%CTR%'替代了'start%CTR%/ wait cmd/k%CTR%'',它工作正常。感謝您的輸入。編輯你的答案,我會驗證它是正確的。 – nyluje

+0

@nyluje感謝您的反饋意見;我考慮過提及'/ c',但是因爲你最初使用'/ k',所以我沒有打擾:-)編輯。 – TripeHound

1

會是這樣的你:

@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%)" 
+0

這樣做的工作(我希望我可以回撥命令按下箭頭鍵,一旦它在提示中執行,如CLI模式,但沒有在我的問題中指定)。我想你在'Echo CommandToRun%'的CommandToRun前面缺少一個%。正確的,我會驗證你的答案(我不能自己編輯它,因爲需要編輯6個字符分鐘)。另外,如果我試圖將''CommandToRun = cordova build android「'更改爲'CommandToRun =」cordova build android「'這不起作用,那麼您對此有何評論或鏈接來解釋它? – nyluje

+0

你可以在'Start'命令上面加上':loop',在它下面加上'goto:loop' ...它會在你每次按下ENTER(使用Ctrl-C停止它)時重複提示運行該命令。如果你想變得聰明,看一下'SET/P'命令(參見'SET /?')讀取一個值並有條件地循環回去,而不需要按Ctrl-C。回覆。最後一部分 - 「_如果我試圖改變......_」如果它工作,你爲什麼要改變它?使用的表單允許存儲包含空格的值,但_does不會在其周圍存儲任何'「...」。你試圖存儲雙引號.../cont – TripeHound

+0

...因爲它正在尋找一個帶有嵌入空格的命令('cordova build android')而不是帶有兩個參數的命令'cordova' 'build'和'android')。 – TripeHound

相關問題