在 Windows 的 CMD 環境下,執行多行指令遇到批次檔之後會被中斷

為什麼指令會中斷

在 Windows 的 CMD 環境下,gradlew 其實是一個批次檔,也就是 gradlew.bat。當你直接在命令列執行一個批次檔時,CMD 會把執行權完全交給那個檔案。等到批次檔跑完,CMD 就會認為任務結束了。這導致你貼上的多行指令中,位於 gradlew 之後的內容都會被直接捨棄。這不是程式出錯,而是 CMD 處理批次檔的預設機制。

使用 call 指令解決

要解決這個問題,你必須在 gradlew 前面加上 call。這個指令會告訴 CMD 執行完該批次檔後,必須回到原本的位置繼續執行下一行。這樣你貼上的多行指令就能順利跑完。

echo 準備開始
call gradlew clean
call gradlew build
echo 全部執行完畢

使用符號連接指令

如果你習慣把指令寫在同一行,可以使用 && 符號。這代表前一個指令成功執行後,才接著跑下一個。即使在這種寫法中,gradlew 前面依然要加上 call,否則後面的指令還是會失效。

call gradlew clean && call gradlew build && echo 成功完成

如果你希望不論 gradlew 成功或失敗都要執行後面的指令,可以把 && 換成單個 & 符號。這在自動化處理時非常有用,能確保流程不被中斷。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *