簡體   English   中英

在不同的目錄中執行批處理文件

[英]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.

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