我有4個.cmd文件。我想一次運行2次。 說我的文件是:1.cmd,2.cmd,3.cmd,4.cmd如何並行運行幾個.cmd文件
我想並行運行1.cmd和2.cmd。現在,當這些結束時,我想運行3.cmd,然後4.cmd。總之,在任何給定的時間我想要運行2個.cmd文件。
我正在使用Start命令進行並行執行。但我對腳本不熟悉,對於如何修改上述運行cmd文件的方式感到困惑。
任何幫助,將不勝感激。
感謝 Debjani
我有4個.cmd文件。我想一次運行2次。 說我的文件是:1.cmd,2.cmd,3.cmd,4.cmd如何並行運行幾個.cmd文件
我想並行運行1.cmd和2.cmd。現在,當這些結束時,我想運行3.cmd,然後4.cmd。總之,在任何給定的時間我想要運行2個.cmd文件。
我正在使用Start命令進行並行執行。但我對腳本不熟悉,對於如何修改上述運行cmd文件的方式感到困惑。
任何幫助,將不勝感激。
感謝 Debjani
我沒有試過,但我認爲你可以使用PowerShell做到這一點。使用這種類型的結構:
http://www.dougfinke.com/blog/index.php/2008/01/30/run-your-powershell-loops-in-parallel/
在這個例子中,你應該能夠執行CMD/BAT文件。
退房的一些想法以下螺紋(?可能重複)
我已經給了一個答案「Parallel execution of shell processes」一次,引用在這裏:
聽起來更像是要使用 Powershell 2.但是,您可以使用
start
產生 新窗口(或其他進程) ,另請參閱此 回答。儘管您可能需要使用其他一些工具和小小的 來創建類似於「進程池」的 (一次只能運行最多 的個實例)。 您可以通過使用tasklist /im
和計數許多 如何已經在那裏(for
環或wc
, 如適用),並簡單地等待(ping -n 2 ::1 >nul 2>&1
)實現後者並重新檢查是否可以產生一個新的 過程。立即@echo off for /l %%i in (1,1,20) do call :loop %%i goto :eof :loop call :checkinstances if %INSTANCES% LSS 5 ( rem just a dummy program that waits instead of doing useful stuff rem but suffices for now echo Starting processing instance for %1 start /min wait.exe 5 sec goto :eof ) rem wait a second, can be adjusted with -w (-n 2 because the first ping
回報;:
我已經拼湊一個小測試 批次此 REM否則只是使用一個未使用的地址和-n 1) echo等待實例關閉... ping -n 2 :: 1> nul 2> rem跳回去看看我們是否可以產生一個新的流程現在 轉到循環 轉到:EOF
:checkinstances rem this could probably be done better. But INSTANCES should contain
運行實例 後來的數量。 FOR/F 「有usebackq」 %%噸(
tasklist /fo csv /fi "imagename eq wait.exe"^|wc -l
)不要設置 INSTANCES = %%噸 轉到:EOF它產生一個最大的是並行執行和 最小化四個新 過程。等待時間需要調整爲 ,具體取決於每個過程如何執行以及運行多長時間 。您可能還需要 調整進程名稱,其中 任務列表正在查找,如果您正在執行 其他操作。
儘管如此,沒有辦法正確計數 批處理產生的 進程。一種方法是 在 開始時的分批(
%RANDOM%
)創建一個隨機數,並創建一個 幫助一批,做加工 (或派生的處理程序),但 可以設置其窗口標題爲 參數:@echo off title %1 "%2" "%3"
這將是一個簡單的批處理,設置 其標題於第一參數和 然後運行與 第三作爲參數的第二參數。然後您可以通過 標題(
tasklist /fi "windowtitle eq ..."
)指定的窗口 進程在任務列表中篩選 標題(tasklist /fi "windowtitle eq ..."
)。這應該相當可靠地工作,並防止太多錯誤 積極。搜索cmd.exe
如果仍有 某些實例正在運行,那麼這將是一個糟糕的主意,因爲這會限制 您的工作進程池。您可以使用
%NUMBER_OF_PROCESSORS%
創建多個實例產生的合理默認值。你也可以很容易地適應這種使用
psexec
產卵的過程 遠程(但不會是非常可行的 因爲你必須在另一臺機器上擁有管理權限的 以及 在提供密碼批量)。 但是,您必須使用進程名稱 進行過濾。
像往常一樣,我推薦Cygwin的一切。 – LatinSuD 2010-09-12 12:37:12