如何从 CMD 创建快捷方式?

如何从 CMD 创建快捷方式?

.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存在于系统中的不同路径,请进行调整)

相关内容