我有一个exe文件,我必须使用几个参数调用,为此我使用bat文件。我执行bat文件后命令提示符没有关闭,而是等我按一个键。现在我必须多次运行这个exe,为此我想运行一个脚本来为我做这个。
i = 0
for path in Paths
outout = codecs.open('runExe.bat', 'w')
output.write(PathToExe + " -param1" + " -param2 " + param2Val[0] + " -param3 " + param3Val[0] + " -param4 " + param4Val[0] + " -param5 param5Val")
output.close()
subprocess.call(["regsvr32.exe", path, "-u", "-s"])
subprocess.call(["regsvr32.exe", path, "-s"])
subprocess.call("runExe.bat")
i + = 1
其中param3Val,param4Val,param5Val是包含相关命令提示参数值的列表。
当我调用这个bat文件时,一切都可以完美地用于exe的第一个乐趣,但是在执行之后,命令promt等待我的响应。当我按任意键时,它会关闭,然后exe文件以不同的参数开始
所以我想用按键消除东西。我试图将“退出”放到bat文件的末尾,但它没有用。当exe完成工作时,如何从脚本关闭命令提示符窗口?
提前致谢!
Upd1:sarmold的做事方式很好,但我认为这是exe(控制台应用程序)等待我的回复。 exe文件中的Smth会阻止控制台窗口关闭,但我无权访问源。如何在执行后关闭它的窗口?
Upd2:我试图在subprocess.call之后添加“shell”调用,但这似乎也不起作用,仍然必须手动响应控制台:(
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate("Command Prompt")
shell.SendKeys("cls(ENTER)")
答案 0 :(得分:2)
这里有两种可能的方法:
只制作一个包含所有命令的bat
文件,包括regsvr32.exe
命令,并执行该命令。
让Python脚本为您完成所有事情。
对于第一种方法,使用"a"
打开模式追加到批处理文件。 (也许在脚本开始时将其删除。)将三个命令的内容写入循环中的批处理文件 - 这样您最终得到一个长批处理文件,其中包含您需要的所有命令。 / p>
然后在循环外部,在脚本结束时调用subprocess.call()
命令,以运行整个过程。
对于第二种方法,删除所有批处理文件,并使用Python PathToExe
运行subprocess.call()
。这几乎就像删除与output
一起使用的所有行一样简单,但将output.write()
更改为subprocess.call()
- 显然,稍微调整一下内容,以便它们适用于{{1}直接。
答案 1 :(得分:1)
您是否以每次运行runExe.bat
时启动命令提示符的方式运行此操作?它不应该必然等待你关闭控制台,但是既然如此,请尝试使用subprocess.call("cmd /C runExe.bat")
运行脚本。
@Arnold是对的,但是:最好简化你的设置和(imho)让python处理所有事情。