.lnk
如何使用命令行实用程序创建另一个文件或可执行文件的快捷方式文件( )?
答案1
此网站上有一些非常有用的信息:http://ss64.com/nt/shortcut.html
似乎有些资源包里有,shortcut.exe
但我没有。
正如许多其他网站提到的,没有内置方法可以通过批处理文件执行此操作。
但你可以通过 VB 脚本来完成:
以下 VBscript 中的可选部分已被注释掉:
Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\MyShortcut.LNK"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = "C:\Program Files\MyApp\MyProgram.EXE"
' oLink.Arguments = ""
' oLink.Description = "MyProgram"
' oLink.HotKey = "ALT+CTRL+F"
' oLink.IconLocation = "C:\Program Files\MyApp\MyProgram.EXE, 2"
' oLink.WindowStyle = "1"
' oLink.WorkingDirectory = "C:\Program Files\MyApp"
oLink.Save
所以,如果你真的必须执行此操作,然后您可以让批处理文件将 VB 脚本写入磁盘,调用它,然后再次将其删除。例如,如下所示:
@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%HOMEDRIVE%%HOMEPATH%\Desktop\Hello.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\Windows\notepad.exe" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
运行上述脚本会在我的桌面上产生一个新的快捷方式:
以下是一位匿名贡献者提供的更完整的代码片段(经过小幅修改):
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET LinkName=Hello
SET Esc_LinkDest=%%HOMEDRIVE%%%%HOMEPATH%%\Desktop\!LinkName!.lnk
SET Esc_LinkTarget=%%SYSTEMROOT%%\notepad.exe
SET cSctVBS=CreateShortcut.vbs
SET LOG=".\%~N0_runtime.log"
((
echo Set oWS = WScript.CreateObject^("WScript.Shell"^)
echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)
echo Set oLink = oWS.CreateShortcut^(sLinkFile^)
echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)
echo oLink.Save
)1>!cSctVBS!
cscript //nologo .\!cSctVBS!
DEL !cSctVBS! /f /q
)1>>!LOG! 2>>&1
答案2
这是一个使用 powershell 的类似解决方案(我知道,您可能可以在 PS 中重写整个批处理文件,但如果您只是想完成它™......)
set TARGET='D:\Temp'
set SHORTCUT='C:\Temp\test.lnk'
set PWS=powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile
%PWS% -Command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut(%SHORTCUT%); $S.TargetPath = %TARGET%; $S.Save()"
您可能必须在文件中明确指定 PS 的路径,但它应该可以工作。您还可以通过此对象修改一些其他属性:
Name MemberType Definition
---- ---------- ----------
Load Method void Load (string)
Save Method void Save ()
Arguments Property string Arguments () {get} {set}
Description Property string Description () {get} {set}
FullName Property string FullName () {get}
Hotkey Property string Hotkey () {get} {set}
IconLocation Property string IconLocation () {get} {set}
RelativePath Property string RelativePath () {set}
TargetPath Property string TargetPath () {get} {set}
WindowStyle Property int WindowStyle () {get} {set}
WorkingDirectory Property string WorkingDirectory () {get} {set}
答案3
除了shortcut.exe,您还可以使用NirCmd的命令行版本来创建快捷方式。 http://nircmd.nirsoft.net/shortcut.html
答案4
如果你有Git安装后,它会捆绑create-shortcut.exe
允许您从命令行创建快捷方式,并在 Windows 10 中运行。据我所知,此实用程序没有公开记录,并且它--help
是最小的:
Usage: create-shortcut.exe [options] <source> <destination>
但是,使用 Sysinternalsstrings
实用程序从中提取字符串.exe
,我能够找出[options]
和快捷方式页面中显示的字段的映射Properties
:
--work-dir ('Start in' field)
--arguments (tacked onto the end of the 'Target')
--show-cmd (I presume this is the 'Run' droplist, values 'Normal window', 'Minimised', 'Maximised')
--icon-file (allows specifying the path to an icon file for the shortcut)
--description ('Comment' field)
使用示例:
REM If bin folder already in your PATH, omit CD line:
cd /d "C:\Program Files\Git\mingw64\bin"
create-shortcut.exe --work-dir "C:\path\to\files" --arguments "--myarg=myval" "C:\path\to\files\file.ext" "C:\path\to\shortcuts\shortcut.lnk"
该strings
实用程序还显示了应用程序与 Windows Vista、7、8、8.1 和 10 的兼容性。
为了方便起见,可以按如下方式将该bin
文件夹添加到您的:PATH
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" "[Environment]::SetEnvironmentVariable(\"PATH\", \"$env:PATH;C:\Program Files\Git\mingw64\bin\", [System.EnvironmentVariableTarget]::User)"
(C:\Program Files\Git\mingw64\bin
如果create-shortcut.exe
存在于系统中的不同路径,请进行调整)