所以,這裏是我的情況:我從一個python腳本調用一個.bat文件。我不確定它是否很重要,但我使用python模塊子進程運行該文件。即從.bat文件非同步運行一系列命令
subprocess.call("dir/file.bat", shell=True)
.bat文件創建依賴於Python腳本執行期間所述用戶輸入,但一般它包含30-40〜行命令來在CMD運行。除了命令的輸入和輸出文件之外,所有這些代碼行都完全相同。例如:
start /wait metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
start /wait metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
start /wait metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt
如果我同時調用metamap13 40倍,我的電腦會崩潰,因爲它是如此的內存密集型。正如你看到的,我已經試過
start /wait
組合,使得第二開始前的第一行會完成。不幸的是,當.bat文件被執行時,它會打開一個新窗口,一旦程序完成運行,窗口不會關閉,因此第二行不會開始,直到我手動關閉新的cmd窗口。將通過此方法處理的數據量很大,這意味着我不能總是可用於關閉數百個新窗口。我也曾嘗試以下操作:
start /wait /B metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
我以爲/ B將具有關閉窗口中刪除的問題,但它仍然同時推出的所有代碼40行。我認爲這與調用metamap13被認爲是完成的命令並因此移動到下一行的事實有關,即使metamap實際上仍在運行。所以我想到了兩種可能的解決方案,我無法弄清楚如何實現:
- 一旦metamap13運行完成,自動關閉新的cmd窗口。
- 一旦metamap13完成,只運行下一行。
任何想法將不勝感激!在metamap13
批處理文件正在展開
是metamap13一個exe?您是否嘗試過運行諸如'start/wait「metamap13之類的東西?-Aq pradaxaText1.txt pradaxa1.out.txt 」' – PsychoData
http://ss64.com/nt/start.html還說你應該提供一個標題,或者在最少'「」'爲空。它還提供'START'' /等待[選項]「C:\ Program.exe」「-a ParametersInfo」' – PsychoData
形式的樣本,你可以嘗試用'cmd/C metamap13 -Aq pradaxaText1.txt替換你的啓動命令pradaxa1.out.txt' –