如何使用Python在DOSbox中运行.bat文件?

时间:2016-06-18 08:16:13

标签: python windows dosbox

我需要使用DOSbox模拟器来运行.bat文件

但我不知道要实现我在python中必须遵循的所有步骤。这是我的尝试:

import os
commands = ['""C:\Program Files (x86)\DOSBox-0.73\dosbox.exe""',
            'mount c c:\Users\g\Desktop',
            'C:',
            'run_t2d.bat']

for i in commands:
    os.system(i)

使用第一个元素运行DOSbox控制台,但是它不识别其他2个命令。

'mount' is not recognized as an internal or external command,
operable program or batch file.
'run_t2d.bat' is not recognized as an internal or external command,
operable program or batch file.

可能与不同的子流程有关。当然,如果我自己运行控制台并输入完全相同的命令

2 个答案:

答案 0 :(得分:2)

你实际上甚至不需要Python。您需要运行Dosbox传入一个-conf参数,该参数指向一个配置文件,其中包含auto exec部分中所需的命令。

因此,如果您在与批处理文件相同的目录中创建一个名为run_t2d.conf的配置文件,如下所示:

[autoexec]
mount c c:\Users\g\Desktop
C:
run_t2d.bat

然后当你启动dosbox时:

C:\Program Files (x86)\DOSBox-0.73\dosbox.exe -conf C:\Users\G\Desktop\run_t2d.conf

当然,如果你愿意,你可以在你的python脚本中调用它。

答案 1 :(得分:2)

您可以使用-c option to DOSBox指定要作为参数运行的命令,而无需创建配置文件。例如:

import subprocess

dosbox_exe = r'C:\Program Files (x86)\DOSBox-0.73\dosbox.exe'
dosbox_args = [r'mount c c:\Users\g\Desktop',
           'C:',
           'run_t2d.bat']

def run_dosbox(args):
    return subprocess.call(reduce(lambda x, y: x + ["-c"] + [y],
                                  args, [dosbox_exe]))

run_dosbox(dosbox_args)

我已使用subprocess.call代替os.system,因为它会在必要时自动处理引用参数。