我正试图从我的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")
使用/wait
的According to this question应该会让命令提示符等待,但对我来说,它只是弹出然后消失,所以我不确定是否执行了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
发布于 2018-07-29 04:12:07
如果使用与符号和s分隔,则可以使用cmd.exe /c
运行多个命令:
cmd.exe /c "cd \dir & 1.bat & 2.bat"
尝试将其传递给subprocess.call,看看效果如何。
https://stackoverflow.com/questions/51574091
复制相似问题