[英]Run batch files sequentially
我想問大家如何在Windows中按順序運行批處理文件。 我努力了 :
start /w batchfile_1.bat
start /w batchfile_2.bat
..
start /w batchfile_n.bat
但我必須手動關閉前一個 .bat 文件進程(例如通過單擊),然后才能繼續進入下一個進程。 是否有任何解決方案可以自動執行此操作,而無需我每次都手動關閉以前的 .bat 程序?
非常感謝。
我會檢查這個問題的解決方案: 運行多個批處理文件
使用調用:
call bat1.cmd
call bat2.cmd
默認情況下,當您從另一個控件運行批處理文件時,它不會傳回給調用者。 這就是為什么你需要使用調用。
基本上,如果您有這樣的批次:
@echo off
echo Foo
batch2.cmd
echo Bar
那么它只會輸出
Foo
如果你這樣寫
@echo off
echo Foo
call batch2.cmd
echo Bar
但是,它會輸出
Foo
Bar
因為在batch2 終止后,程序控制被傳遞回原始批處理文件。
如果您喜歡使用START
,您可以讓您的批處理文件以EXIT
命令結束。 這將關閉由start
命令創建的窗口。
@echo off
.
.
:: Inspired coding
.
.
exit
我不確定,但根據您的評論,當您運行該START
命令序列時,似乎會發生以下情況:
調用START /W
命令並啟動批處理文件。
批處理文件開始執行並運行程序。
批處理文件完成,其控制台窗口保持打開狀態,但程序繼續運行。
用於運行批處理文件的START /W
命令仍在執行,因為控制台窗口保持打開狀態。
您等到程序終止,然后關閉控制台窗口,然后調用下一個START /W
命令,並重復所有操作。
現在,如果您將EXIT
放在要順序運行的每個批處理文件的末尾,情況會更糟,因為它會導致控制台窗口在批處理腳本完成后關閉,進而結束相應的START /W
命令並導致另一個要執行,即使批處理腳本調用的程序可能仍在運行。 所以效果是批處理腳本(或者,更確切地說,它們執行的程序)同時運行而不是順序運行。
我認為,如果這完全可以解決,您需要移動START /W
命令並將其放在每個批處理文件中,該批處理文件執行的(每個)命令之前,不等待終止。 也就是說,如果您的batchfile_1.bat
運行program.exe
,請將命令行更改為START /W program.exe
,對於其他批處理文件中的其他相關命令也是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.