[英]Execute batch file in different directory
我有一個像以下(Windows)的文件結構:
D:\
dir_1\
batch_1.bat
dir_1a\
batch_2.bat
dir_2\
main.py
為了這個問題, batch_1.bat
只是調用batch_2.bat
,看起來像:
cd dir_1a
start batch_2.bat %*
打開batch_1.bat
從命令提示符打開確實batch_2.bat
因為它應該,並從那里,一切都是金色的。
現在我希望我的Python文件D:\\dir_2\\main.py
生成一個新進程,啟動batch_1.bat
,然后啟動batch_2.bat
。 所以我認為以下Python代碼應該可以工作:
import subprocess
subprocess.Popen(['cd "D:/dir_1"', "start batch_1.bat"], shell=True)
這導致“系統無法找到指定的路徑”被打印到我的Python控制台。 (當然沒有引起錯誤。)這是由第一個命令引起的。 即使我將其切割為:
subprocess.Popen(['cd "D:/"'], shell=True)
我也試過直接啟動批處理文件,如下所示:
subprocess.Popen("start D:/dir_1/batch_1.bat", shell=True)
由於我沒有完全得到的原因,這似乎只是在dir_2
打開一個Windows命令提示符。
如果我放棄了這個命令的start
部分,那么我的Python進程將最終等待batch_1
完成,這是我不想要的。 但它確實進一步:
subprocess.Popen("D:/dir_1/batch_1.bat", shell=True)
這導致batch_1.bat
成功執行...在dir_2
,Python腳本的目錄,而不是batch_1.bat
的目錄,這導致它無法找到dir_1a\\
因此, batch_2.bat
未執行一點都不
我很困惑。 我做錯了什么,我應該做些什么呢?
您的問題在這里得到解答: Python通過參數指定popen工作目錄
簡而言之,只需將一個可選的cwd參數傳遞給Popen
:
subprocess.Popen(["batch_1.bat"], shell=True, cwd=r'd:\<your path>\dir1')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.