我试图从我的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文件是否已执行。
我也不知道我是否正确地形成了命令行代码。我用google搜索了如何在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
答案 0 :(得分:1)
如果用和号将它们分开,则可以使用cmd.exe /c
运行多个命令:
cmd.exe /c "cd \dir & 1.bat & 2.bat"
尝试将其传递给subprocess.call并查看进展情况。