Python:在单个实例中以CMD执行多个命令

时间:2018-07-28 18:24:52

标签: python batch-file cmd

我试图从我的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

1 个答案:

答案 0 :(得分:1)

如果用和号将它们分开,则可以使用cmd.exe /c运行多个命令:

cmd.exe /c "cd \dir & 1.bat & 2.bat"

尝试将其传递给subprocess.call并查看进展情况。