Há algumas informações muito úteis neste site: link
Parece que há algum shortcut.exe
em algum kit de recursos que eu não tenho.
Como muitos outros sites mencionam, não há uma maneira interna de fazer isso a partir de um arquivo em lotes.
Mas você pode fazer isso a partir de um script VB:
Optional sections in the VBscript below are commented out:
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
Então, se você realmente deve fazê-lo, então você pode fazer com que seu arquivo em lote grave o script VB no disco, invoque-o e remova-o novamente. Por exemplo, assim:
@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
A execução do script acima resulta em um novo atalho na minha área de trabalho:
Esteéumsnippetmaiscompletodeumcolaboradoranônimo(atualizadocomumacorreçãomenor):
@echooffSETLOCALENABLEDELAYEDEXPANSIONSETLinkName=HelloSETEsc_LinkDest=%%HOMEDRIVE%%%%HOMEPATH%%\Desktop\!LinkName!.lnkSETEsc_LinkTarget=%%SYSTEMROOT%%\notepad.exeSETcSctVBS=CreateShortcut.vbsSETLOG=".\%~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