使用Python在Windows 7中创建快捷方式文件
有没有一种简单的方法可以在Windows7的Python上创建快捷方式?我在网上查了一下,但似乎没那么简单 我尝试过使用这种简单的方法:使用Python在Windows 7中创建快捷方式文件,python,windows-7,operating-system,shortcut,Python,Windows 7,Operating System,Shortcut,有没有一种简单的方法可以在Windows7的Python上创建快捷方式?我在网上查了一下,但似乎没那么简单 我尝试过使用这种简单的方法: hi = open("ShortcutFile.lnk", "w") hi.close() 这将创建一个快捷方式文件。但是我如何编辑它所连接的链接呢。喜欢打开的文件吗?有人能给我一个正确的方向吗?您当前正在做的是在您的计算机上当前工作目录中创建一个相当于空文件(在本例中是一个快捷方式)的文件 要使此文件成为可用的快捷方式,您需要将一些信息写入正在创建的文件中
hi = open("ShortcutFile.lnk", "w")
hi.close()
这将创建一个快捷方式文件。但是我如何编辑它所连接的链接呢。喜欢打开的文件吗?有人能给我一个正确的方向吗?您当前正在做的是在您的计算机上当前工作目录中创建一个相当于空文件(在本例中是一个快捷方式)的文件 要使此文件成为可用的快捷方式,您需要将一些信息写入正在创建的文件中,以告知windows此快捷方式文件将要执行的操作。在本例中,这就是您希望它运行的快捷方式类型以及完成手头任务所需的任何其他参数 我相信pywin32对于这些任务中的大多数都会派上用场: 如果要创建internet快捷方式,可在此页面上找到该快捷方式的示例(使用pywin32):
如果要创建internet快捷方式以外的其他快捷方式,则需要根据要运行的快捷方式类型查找相应的windows命令(例如,打开特定应用程序或特定文件)。Old,但是我仍然想发布一个答案来帮助那些可能有相同问题并且需要代码示例的人 首先,使用
pip安装pywin32下载pywin32,或者下载二进制文件或文件,然后pip安装
import win32com.client
import pythoncom
import os
# pythoncom.CoInitialize() # remove the '#' at the beginning of the line if running in a thread.
desktop = r'C:\Users\Public\Desktop' # path to where you want to put the .lnk
path = os.path.join(desktop, 'NameOfShortcut.lnk')
target = r'C:\path\to\target\file.exe'
icon = r'C:\path\to\icon\resource.ico' # not needed, but nice
shell = win32com.client.Dispatch("WScript.Shell")
shortcut = shell.CreateShortCut(path)
shortcut.Targetpath = target
shortcut.IconLocation = icon
shortcut.WindowStyle = 7 # 7 - Minimized, 3 - Maximized, 1 - Normal
shortcut.save()
当我有一个带有调试控制台的GUI时,我使用了WindowStyle
,我不希望控制台总是弹出。我还没有尝试过一个不受安慰的程序
希望这有帮助 如果您正在寻找与Python 3兼容的独立于平台的版本,请查看
来自swinlnk.swinlnk导入swinlnk
swl=SWinLnk()
swl.create_lnk('W:\Foo\Bar','/mnt/win\u share/playerd/Bar\u winlink.lnk'))
此python脚本基于C/Bash工具。您可以生成一个.bat
文件,并使用正确的路径替换特定部分,以便使用空格进行操作
管理带空格的windows路径的正确方法是将带空格的路径用“”换行。例如,如果路径为
C:\Users\Pc\Desktop
更正的版本是
C:\Users\“电脑”\桌面
我提出的解决办法是:
1-生成一个包含关键字的基本.bat
文件,以替换为通过Python的正确路径
2-使用os
Python库根据当前环境构建路径
3-使用Python打开base.bat
文件,并逐行检查关键字搜索,以替换为先前在陡峭2中生成的正确路径
4-同时,我们检查并用纠正的路径替换我们的特定关键字,我们编写一个最终的.bat
文件,其中包含base.bat
文件的更新行,位于相同的中,用于循环statement
5-使用子流程
Python库执行final.bat
文件:
# Python Code
subprocess.run("final.bat", stdout=subprocess.PIPE)
为了用代码解释它,我将使用一个个人屏幕记录器项目,它是这样的:
# Python code
import os, subprocess
path = os.environ["USERPROFILE"]+"\\Desktop\\accsdirecto.vbs" user =
os.environ["USERNAME"] path = path.replace('{}'.format(user),
'"{}"'.format(user))
base = open("base", "r") bat = open("lnk.bat", "w")
for x in base:
if "[r]" in str(x):
x = x.replace("[r]", path)
bat.write(x)
base.close()
bat.close()
subprocess.run("final.bat", stdout=subprocess.PIPE)
1) 我们的base.bat
文件(查看我们的[r]
关键字):
=============================================================
@回音
set dir=%LOCALAPPDATA%\srw
设置sof=srw.exe
集合名称=Grabador de Pantalla
ECHO Set objShell=WScript.CreateObject(“WScript.Shell”)>>[r]
ECHO ficheroAccesoDirecto=“%USERPROFILE%\Desktop\%name%.lnk”>>[r]
ECHO Set objAccesoDirecto=objShell.CreateShortcut(ficheroAccesoDirecto)>>[r]
ECHO objAccesoDirecto.TargetPath=“%dir%\%sof%”>>[r]
ECHO objAccesoDirecto.Arguments=“”>>[r]
ECHO objAccesoDirecto.Description=“%name%”>>[r]
ECHO objAccesoDirecto.HotKey=“ALT+CTRL+G”>>[r]
ECHO objAccesoDirecto.IconLocation=“%dir%\vista\icon.ico”>>[r]
ECHO objAccesoDirecto.WindowStyle=“1”>>[r]
ECHO objAccesoDirecto.WorkingDirectory=“%dir%”>[r]
ECHO objAccesoDirecto.Save>>[r]
ATTRIB+h+s[r]
开始/B/等待[r]
擦除/Q/a h s[r]
出口
=============================================================
2-现在我们开始编写Python脚本。构建路径:
# Python Code
import os, subprocess
path = os.environ["USERPROFILE"]+"\\Desktop\\accsdirecto.vbs"
user = os.environ["USERNAME"]
path = path.replace('{}'.format(user), '"{}"'.format(user))
此代码生成我们的间隔格式化路径:
# Python Code
for x in base:
if "[r]" in str(x):
x = x.replace("[r]", path)
bat.write(x)
C:\Users\“El computator”\Desktop\accsdirecto.vbs
3-打开base.bat
文件并创建我们的final.bat
文件:
# Python Code
base = open("base", "r")
bat = open("lnk.bat", "w")
4-逐行检查base.bat
文件,并替换[r]
关键字以获得正确的格式化路径:
# Python Code
for x in base:
if "[r]" in str(x):
x = x.replace("[r]", path)
bat.write(x)
最后,我们关闭.bat
文件:
# Python Code
base.close()
bat.close()
5-使用subprocess
Python库执行final.bat
文件:
# Python Code
subprocess.run("final.bat", stdout=subprocess.PIPE)
我们的整个Python脚本如下所示:
# Python code
import os, subprocess
path = os.environ["USERPROFILE"]+"\\Desktop\\accsdirecto.vbs" user =
os.environ["USERNAME"] path = path.replace('{}'.format(user),
'"{}"'.format(user))
base = open("base", "r") bat = open("lnk.bat", "w")
for x in base:
if "[r]" in str(x):
x = x.replace("[r]", path)
bat.write(x)
base.close()
bat.close()
subprocess.run("final.bat", stdout=subprocess.PIPE)
最后,生成的最终.bat文件如下所示:
# Python code
import os, subprocess
path = os.environ["USERPROFILE"]+"\\Desktop\\accsdirecto.vbs" user =
os.environ["USERNAME"] path = path.replace('{}'.format(user),
'"{}"'.format(user))
base = open("base", "r") bat = open("lnk.bat", "w")
for x in base:
if "[r]" in str(x):
x = x.replace("[r]", path)
bat.write(x)
base.close()
bat.close()
subprocess.run("final.bat", stdout=subprocess.PIPE)
=============================================================
@回音
set dir=%LOCALAPPDATA%\srw
设置sof=srw.exe
集合名称=Grabador de Pantalla
ECHO Set objShell=WScript.CreateObject(“WScript.Shell”)>>C:\Users\“El computator”\Desktop\accsdirecto.vbs
ECHO ficheroAccesoDirecto=“%USERPROFILE%\Desktop\%name%.lnk”>>C:\Users\“El Computerator”\Desktop\accsdirecto.vbs
ECHO Set objAccesoDirecto=objShell.CreateShortcut(ficheroAccesoDirecto)>>C:\Users\“El Computerator”\Desktop\accsdirecto.vbs
ECHO objAccesoDirecto.TargetPath=“%dir%\%sof%”>>C:\Users\“El computerator”\Desktop\accsdirecto.vbs
ECHO objAccesoDirecto.Arguments=“”>>C:\Users\“El computator”\Desktop\accsdirecto.vbs
ECHO objAccesoDirecto.Description=“%name%”>>C:\Users\“El computator”\Desktop\accsdirecto.vbs
回声小体