我想在後臺使用subprocess popen執行批處理文件,但是當批處理文件中有回聲時它會停止執行。Python:在後臺批處理文件上運行subprocess.Popen停止回聲
這是我使用Python中的內容:
subprocess.Popen("test.bat", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
這是一個示例批處理文件使用測試,我真正的批處理文件失敗,以至於即時通訊:
@ECHO OFF
ECHO %date% %time%: Test 1 >> test.txt
ECHO Test 1
ECHO %date% %time%: Test 2 >> test.txt
ECHO Test 2
執行此操作時,它幾乎總是停在「ECHO Test 1」上,因爲text.txt文件不會填入「測試2」文本。如果您刪除或註釋掉「ECHO Test 1」,它就可以工作。在我真正的批處理文件中,這並非如此簡單,它也會在回聲結束後停止,以便在多個文件中嘗試。
它在手動執行批處理文件時起作用,因爲它在回顯後繼續。 我可以通過刪除echo:s來做一個解決方法,但如果你想手動運行批處理文件,那麼它不能很好地工作。
我做錯了什麼或者它是如何工作的?
這個批處理文件與您的真實批處理文件有相同的問題嗎? –
你需要命令的輸出嗎?因爲你必須在一段時間後消耗輸出,否則過程會被阻塞。 –
它與真正的批處理文件有相同的問題。我不需要這個腳本中的輸出,但是如果你手動運行這個批處理文件就很有用。它啓動一個不停止的程序,這就是爲什麼它需要在後臺運行 – Meathook