从另一个目录

时间:2016-08-25 10:42:02

标签: python batch-file subprocess call popen

我创建了一个Python脚本,需要根据某些条件启动 .bat 文件。

Python脚本位置: \ Component \ myScript.py

批处理文件位置: \ Component \ MS20160825 \ toExecute.bat
批处理文件内部使用 \ Component \ bin \

中的一些可执行文件

我该怎么做:

  1. 从Python脚本启动.BAT文件,以便.BAT成功执行。 BAT文件应该能够在 \ Component \ bin \ 目录中找到可执行文件来执行其任务并产生所需的结果。

  2. 执行Python脚本执行,直到.BAT完成执行。

  3. .BAT文件包含暂停> nul 语句。我需要绕过它,这意味着当从Python脚本执行.BAT时,它不应该等待用户按 Enter 而应该在执行第二个最后一个语句后正常终止。因为需要多次执行相同的.BAT文件。

2 个答案:

答案 0 :(得分:2)

应该解决您遇到的所有问题!

import subprocess

p = subprocess.Popen('batch.bat', shell=True, stdin=subprocess.PIPE)
stdout, stderr = p.communicate()

答案 1 :(得分:2)

感谢所有人的积极建议 以下代码为我做了小修正:

import subprocess

batchFileLocation = 'Component\\MS20160825'
batchFileFullPath = os.path.join(batchFileLocation, 'toExecute.bat')

p = subprocess.Popen(os.path.abspath(batchFileFullPath), stdin=subprocess.PIPE, cwd = batchFileLocation)
stdout,stderr = p.communicate()

此处 cwd 参数非常重要,需要使用放置批处理文件的位置进行更新,然后只有批处理文件才能正确执行。

之后,只有批处理文件才能搜索执行所需的二进制文件(放在不同的目录,如本例中的 Component \ bin \ )。

相关问题