簡體   English   中英

按順序運行批處理文件

[英]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命令序列時,似乎會發生以下情況:

  1. 調用START /W命令並啟動批處理文件。

  2. 批處理文件開始執行並運行程序。

  3. 批處理文件完成,其控制台窗口保持打開狀態,但程序繼續運行。

  4. 用於運行批處理文件的START /W命令仍在執行,因為控制台窗口保持打開狀態。

  5. 您等到程序終止,然后關閉控制台窗口,然后調用下一個START /W命令,並重復所有操作。

現在,如果您將EXIT放在要順序運行的每個批處理文件的末尾,情況會更糟,因為它會導致控制台窗口在批處理腳本完成后關閉,進而結束相應的START /W命令並導致另一個要執行,即使批處理腳本調用的程序可能仍在運行。 所以效果是批處理腳本(或者,更確切地說,它們執行的程序)同時運行而不是順序運行。

我認為,如果這完全可以解決,您需要移動START /W命令並將其放在每個批處理文件中,該批處理文件執行的(每個)命令之前,不等待終止。 也就是說,如果您的batchfile_1.bat運行program.exe ,請將命令行更改為START /W program.exe ,對於其他批處理文件中的其他相關命令也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM