【发布时间】:2018-07-28 18:24:52
【问题描述】:
我试图从我的 python 程序中调用几个“阻塞”的 .bat 文件。我需要做的第一件事是更改打开 CMD 的目录。让 CMD 指向所需位置后,我将调用两个 bat 文件。我希望它们按顺序执行。
def launchAdminConsole():
print('Going to launch admin console')
changeDir = 'cd dir1\\dir2\\bin \n 1.bat \n 2.bat'
os.system("start /wait cmd /c {"+changeDir+"}")
print("Admin Console launced")
According to this question 使用/wait 应该让命令提示符等待,但对我来说,它只是弹出并消失,所以我不确定 bat 文件是否被执行。
我也不确定我是否正确地形成了命令行代码。我用谷歌搜索了如何在 python 的单个 cmd 实例中执行多个命令,但没有一个结果对我有太大帮助,所以我自己猜测并做了上面的代码。
我需要命令提示符来打开并运行这两个 bat 文件,然后将控制权交还给 python。我不需要获取 bat 文件的输出,或者我只需要知道这两个文件是否被执行。正如我之前所说,它们都在阻止 bat 文件,因此如果运行正确,命令提示符将无法如此快速地关闭。我希望你们得到我的要求,否则下面的评论我会解释更多。
编辑: 更新我的代码如下
def launchAdminConsole2():
print('Going to launch admin console')
changeDir = 'cd dir1\\dir2\\bin'
runOnce1 = '1.bat'
runOnce2 = '2.bat'
p = subprocess.Popen(changeDir,shell=True)
p.wait()
print(p.returncode)
p = subprocess.call([changeDir, runOnce, runOnce1])
p.wait()
print("Admin Console launced")
更改目录的返回码返回0,但表示找不到1.bat。我确信如果目录已更改,该文件将出现在给定位置。
错误是
File "C:\Users\nirma\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 304, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\nirma\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "C:\Users\nirma\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1155, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
【问题讨论】:
标签: python batch-file cmd