文章目錄
如何在 Command 中依序執行指令
同事問說他有幾個 .bat 指令檔,想要上一個 .bat 完成再開始執行下一個 .bat。這樣的需求在 powershell 中很常見,第一個念頭就是問看看能不能用 powershell 寫,但定神細想,難道只能用 powershell 嗎?! 也許網路上的大神們有其他更漂亮的解法,就來看看可以怎麼做吧
基本環境
第一隻 bat:1.bat
- 印出
start1
- sleep 5 秒
印出
end1
echo start1 timeout /t 5 echo end1
- 印出
第一隻 bat:2.bat
- 印出
start2
- sleep 5 秒
印出
end2
echo start2 timeout /t 5 echo end2
- 印出
讓 command 循序執行
使用
&&
串接指令1.bat && 2.bat
效果
執行
1.bat
並等待倒數結數1.bat
完成後執行2.bat
並等待倒數結數指令全部完成
其他 command 好用符號指令
符號 | 說明 | 範例 |
---|---|---|
> | 將指令執行結果寫至檔案; 檔案不存在時會自動建立; 如果檔案已存在會直接覆寫 | echo YowkoTest > test.txt |
>> | 將指令執行結果加至檔案末端; 檔案不存在時會自動建立 | echo YowkoTestAppend >> test.txt |
< | 將檔案內容當做指令輸入來源 | more < test.txt |
¦ | 將指令 1 執行結果當做指令 2 輸入參數 | echo y¦ del test.txt |
& | 將兩個指令合併執行,先執行指令 1 接著執行指令 2 | DIR Z:\ & 2.bat (z 不存在,2.bat 仍會執行) |
&& | 合併執行,指令 1 執行成功後接著執行指令 2 | DIR Z:\ && 2.bat(z 不存在,2.bat 不會執行) |
¦¦ | 只有在指令 1 執行失敗時才執行指令 2 | DIR Z:\ ¦¦ 2.bat ((z 不存在,2.bat 才會執行) |
@ | 通常放在 bat 檔的第一行,用來關閉顯示指令 | @echo off |
心得
雖然現在比較常使用 PowerShell,不過 command 指令通用性還是比較高,語法的多樣性或許比不上 PowerShell,如果懂得充份利用還是可以完成很多事的
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。