在批次檔中編寫簡單命令清單時遇到問題

在批次檔中編寫簡單命令清單時遇到問題

我正在嘗試在一批中運行一些簡單的批次命令。
就此而言,每個命令都是一個批次命令,如下所示:

 rails generate scaffold illness name:string
 rails generate scaffold ingredient name:string origin_id:integer

現在,我的批次檔不再執行所有 30 個命令,而是僅執行第一個命令並返回提示行。所以我必須手動運行它。

答案1

您必須將這個字call放在批次檔的前面...

@迴聲關閉
呼叫rails產生腳手架疾病名稱:string
呼叫ralis產生腳手架成分名稱:字串origin_id:整數

這假設「rails」確實是rails.bat。

答案2

雖然 jftuga 之前的答案是正確的,但更完整的答案如下:

@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer

你必須放置一個稱呼如果您希望腳本在每次呼叫後繼續,則在批次檔中的每一行前面,這是觸發新進程的外部命令。因此,像 DIR 和 COPY 這樣的內部命令不需要呼叫。但是運行一個新的命令提示字元甚至另一個批次文件,控制權將完全移交給該程序,除非這個詞稱呼位於隊伍的最前面。實際上,一旦您執行命令,新的命令提示字元會將控制權交還給批次檔。出口它。

有些程式在執行時會暫停,但完成後會回到批次檔的下一行。在下面的批次檔中,腳本將在每次呼叫記事本後暫停,並在記事本退出後開始(兩次)。所以它們實際上是相同的。

notepad.exe
call notepad.exe
echo    It came back.

但是,當調用另一個批次檔時,除非前面有調用,否則完全控制權將傳遞給新進程。因此,在下面的程式碼中,bat 檔案的第一次呼叫將在完成後返回,但第二次呼叫將永遠不會返回,因此最後一個 echo 行將永遠不會運行。呼叫firstBatch.bat SecondBatch.bat echo 你永遠不會看到這一行

我不確定 Rails 命令是如何工作的,但它似乎就像一個批次會話。也許這是一個批次檔。在該實例中鍵入 exit 之前,對 cmd 的前兩次呼叫將不會傳回,從而返回到先前的 shell。這稱呼是無關緊要的。但第三個使用 /c 開關,它表示執行命令並自動返回。如果要在傳送指令至新的 cmd 會話後使其保持活動狀態,請使用 /K 開關。如需更多協助:cmd /?

cmd
call cmd 
cmd /c dir
echo   You will see this after typing Exit twice to leave two new instances of cmd. The third instance returned automatically.

相關內容