无法启动Windows快捷方式

3

我正在尝试使用Python启动Windows窗口。我已经尝试过使用os.system,subprocess.call,os.startfile等NUMEROUS方法,但总是出现“路径不存在”的错误。

我知道路径是正确的,因为我已经在CMD.EXE中尝试运行了以下命令:

start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk

以下是我尝试过但没有成功的一些内容:

os.startfile(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
os.startfile("D:\\johan\\programmering\\Scripts\\shortcuts\\HWMonitor.lnk")
subprocess.call("D:\\johan\\programmering\\Scripts\\shortcuts\\HWMonitor.lnk")
subprocess.call(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.Popen(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.Popen(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk", shell=True)
os.system(r"start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")

p= subprocess.Popen(r"start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk", shell=True)
p.wait()

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
subprocess.call(shortcut.Targetpath)

免责声明 我知道在SO上有类似的问题,但是它们都没有帮助到我。所以,在你开始哭泣“重复!”之前,请知道我已经尝试过这些解决方案,但并没有成功。


可能是在Windows下运行快捷方式的重复问题。 - Aaron
1
@Aaron,我现在已经在问题中添加了我的尝试。我做错了什么? - Johan Hjalmarsson
@eryksun os.path.exists 返回 false。 - Johan Hjalmarsson
它什么也没做。我应该打印os.stat的结果吗?还是怎么处理它? - Johan Hjalmarsson
1
尝试通过subprocess.call直接运行可执行文件,通过C:和D:驱动器路径,带或不带shell=True。例如,subprocess.call([r'C:\Program Files (x86)\CPUID\HWMonitor\HWMonitor.exe']) - Eryk Sun
显示剩余17条评论
1个回答

1
根据此 答案,您可以解决链接路径,然后调用已解决的路径。
import sys
import win32com.client,win32api

shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(r"D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk")
long_path = shortcut.Targetpath

但是long_path可能是一个带有很多垃圾字符的奇怪的Windows路径,所以如果...

subprocess.call([long_path])

如果无法正常工作,您可以将长路径解析为短路径(8.3命名):
short_path=win32api.GetShortPathName(long_path)

now do:

subprocess.call([short_path])

安装模块遇到了一些问题,我会在成功安装后再回来查看这个答案。 - Johan Hjalmarsson
好的!所以我已经成功让win32com.client工作了,我正在使用您的确切答案,但我仍然收到“FileNotFoundError:[WinError 2]系统找不到指定的文件”的错误提示。 - Johan Hjalmarsson
1
好的,你能打印 shortcut.Targetpath 吗?你确定你的链接指向一个有效的文件吗?另外请检查我的编辑。 - Jean-François Fabre
我无法打印快捷方式目标路径(同样的错误),我已经尝试过你更新的答案(同样的错误),正如我在问题中所说,如果我只是在CMD.EXE中运行start D:\johan\programmering\Scripts\shortcuts\HWMonitor.lnk,它可以工作,所以是的。路径应该是正确的。 - Johan Hjalmarsson
1
打印时出现相同的错误吗?是哪个错误?print应该正常工作。 - Jean-François Fabre
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接