我需要使用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.
可能与不同的子流程有关。当然,如果我自己运行控制台并输入完全相同的命令
答案 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
,因为它会在必要时自动处理引用参数。