在我下面附带的脚本中,我尝试使用Python进行一个非常简单的过程。 顺序执行本机Windows命令以及从Freeware,可移植程序调用可执行文件。 subprocess.call()
功能虽然没有按预期运行。
我遇到的行为:
〜ONE
变量被调用然后停止/等待,就像我期望的那样,但当我退出ONE
(taskmgr)时,它启动TWO
和{{1同时然后等待。
〜当我退出THREE
时,它同时调用两个可移植程序THREE
和FOUR
并等待。
〜然后它开始FIVE
并等待。
〜最后它同时执行其余命令而不会暂停。
对此行为的原因有何解释?和/或建议的工作来完成相同的结果?
SIX
编辑:我希望/希望每个命令都被执行,但不移动到下一个命令,直到当前命令被取消/终止。与使用import subprocess
def AutoCommands():
ONE = 'taskmgr /0 /startup'
TWO = 'taskschd.msc'
THREE = 'services.msc'
FOUR = '"%CD%/FolderDirectory/PortableProgram" -custom -flags'
FIVE = '"%CD%/FolderDirectory/PortableProgram2" -more -flags'
SIX = '"%CD%/FolderDirectory/PortableProgram3" -more -flags'
SEVEN = '"appwiz.cpl"'
EIGHT = 'wuapp'
autocommands = [ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT]
for command in autocommands:
subprocess.call(command, shell=True)
AutoCommands()
等类似...我在start /wait program.exe && program2.exe
中编写了上述脚本,它按照您的预期运行,在命令之间等待。但是,如果我尝试使用.bat
或.bat
执行os.system()
,则表现出相同的行为。如果我尝试直接使用subprocess.Popen()
,则表现出相同的行为。
我还尝试使用os.system("start /wait program.exe && start /wait program2.exe")
(不是我想要使用的)建议here,但根本无法使用。