繁体   English   中英

在Windows下运行快捷方式

[英]Run a shortcut under windows

以下内容不起作用,因为它不会等到该过程完成:

import subprocess
p = subprocess.Popen('start /WAIT /B MOZILL~1.LNK', shell=True)
p.wait()

知道如何运行快捷方式并等待子进程返回吗?

编辑:最初我是在帖子中没有shell选项的情况下尝试此操作,这导致Popen失败。 实际上, start不是可执行文件,而是shell命令。 感谢吉姆,这是固定的。

您将需要调用一个外壳程序才能使subprocess选项起作用:

p = subprocess.Popen('start /B MOZILL~1.LNK', shell=True)
p.wait()

但是,这仍然会立即退出(请参阅@R。Bemrose)。

如果p.pid包含正确的pid(我在Windows上不确定),则可以使用os.waitpid()等待程序退出。 否则,您可能需要使用一些win32 com魔术。

开始启动程序后,cmd.exe就会终止。 该行为已记录(在开始/?中):

如果启用了命令扩展,则通过命令行或START命令进行的外部命令调用将发生如下变化:

...

当执行的应用程序是32位GUI应用程序时,CMD.EXE在返回命令提示符之前不会等待该应用程序终止。 如果在命令脚本中执行,则不会发生此新行为。

我不确定/ wait标志如何影响它。

注意:我只是在添加Jim的答复,只是一个小技巧。 使用“ WAIT”选项启动怎么办?

p = subprocess.Popen('start /B MOZILL~1.LNK /WAIT', shell=True)
p.wait()

这应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM