【发布时间】:2015-08-30 14:43:35
【问题描述】:
我在一个文件夹中有一个.bat,其中有一个名为abcexport.exe 的exe,其中包含以下代码:
abcexport.exe myswf.swf
像往常一样在 Windows 上双击 bat 会按预期导出 swf。
我需要在 python 中执行此操作,但它抱怨 abcexport “不被识别为内部或外部命令”。
我的代码:
尝试 1 -
os.startfile("path\\decompiler.bat")
尝试 2 -
subprocess.call([path\\decompiler.bat"])
还尝试了与os.system() 和subprocess 方法Popen 相同的方法,并传递参数shell=True 最终结果相同
【问题讨论】:
-
使用
shell=True运行带有Popen(和call等)的.bat 是不必要的。底层的CreateProcess调用知道运行在ComSpec环境变量中设置的shell。 -
由于批处理文件依赖于工作目录,因此需要使用
cwd参数进行设置。也就是说,.bat 写得不好。它应该将其目录引用为%~dp0,即脚本的 [d]rive 和 [p]ath (arg 0)。 -
当你双击运行批处理文件时,它可以工作,因为资源管理器将工作目录设置为批处理文件的目录。
-
@eryksun 我的错,这就像一个魅力。非常感谢!!
标签: python windows batch-file cmd