在python的另一个目录中运行batch file

我想运行位于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" 

我应该提到,如果我用PATH中的另一个程序(如notepadreplacemybat ,它的工作原理绝对没问题。

Solutions Collecting From Web of "在python的另一个目录中运行batch file"

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

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

您可以在bat文件中使用%~dp0来获取bat文件所在的目录,而不是像@eryksun所建议的那样使用 cwd=MyFolder

将shell = True加入命令解决了这个问题。