在python中的另一个目录中运行批处理文件

时间:2015-09-02 16:50:17

标签: python windows batch-file subprocess

我想运行位于MyFolder中的mybat.bat文件,该文件与当前目录不同。我使用了以下代码:

subprocess.Popen(["mybat", MyArg],
                  cwd=MyFolder,
                  stdout=subprocess.PIPE,
                  stderr=subprocess.PIPE,
                  stdin=subprocess.PIPE)

但是,我收到以下错误:

"WindowsError: [Error 2] The system cannot find the file specified"

我应该提一下,如果我将mybat替换为PATH中的另一个程序,例如notepad,它就可以正常工作。

2 个答案:

答案 0 :(得分:1)

仅在子进程中更改工作目录,即cwd=MyFolder不会使os.path.join(MyFolder, "mybat.bat")可用。尝试:

p = Popen([os.path.join(MyFolder, "mybat.bat"), MyArg], cwd=MyFolder)

你可以use %~dp0 inside your bat-file, to get the directory where the bat-file resides代替cwd=MyFolder作为@eryksun suggested

答案 1 :(得分:0)

将shell = True添加到命令解决了问题。