2016-06-18 70 views
0

我需要使用DOSbox模擬器來運行一個.bat文件如何用Python在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. 

可能是與不同​​子進程有關的東西。當然,如果我運行自己的控制檯,並輸入完全相同的命令它的工作

+1

這種情況下'os.curdir'是什麼? – techydesigner

+0

我認爲這是Windows? – techydesigner

+2

你爲什麼認爲其他命令會在DOSbox中運行? –

回答

2

你實際上甚至不需要Python這個。您需要在自動執行部分中運行Dosbox傳入的-conf參數,該參數指向具有所需命令的配置文件。

所以,如果你創建了一個名爲像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腳本中調用它。

+0

不幸的是,這只是python例程中的一小部分,所以它必須在python中完成。我試圖創建-conf文件,然後從python調用它沒有成功。 os.system('「」C:\ Program Files(x86)\ DOSBox-0.73 \ dosbox.exe -conf C:\ Users \ G \ Desktop \ run_t2d.conf「」')或os.system('「」C :\ Program Files(x86)\ DOSBox-0.73 \ dosbox.exe「」'+「 - conf C:\ Users \ G \ Desktop \ run_t2d.conf」) – gis20

+0

在dos框上顯示什麼?它是否顯示與通常打開時不同的東西? –

+1

嘗試'os.system(r'「」C:\ Program Files(x86)\ DOSBox-0.73 \ dosbox。exe「-conf」C:\ Users \ G \ Desktop \ run_t2d.conf「」')'。這使用一個原始字符串來避免創建控制字符,如'「\ r」'(回車);將兩個文件路徑用雙引號包起來(技術上對於第二個路徑不需要,因爲它沒有空格);並將整個命令封裝在引號中,以解決'cmd/c'如何解析命令行中的遺留問題。 – eryksun

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,因爲它會自動處理報價所必需的參數那裏。

+0

@eryksun它會自動處理引用DOSBox所期望的參數。 –