Как я могу создать файл ярлыка (.lnk
) в другой файл или исполняемый файл с помощью утилит командной строки?
Как сделать ярлык из CMD?


7 ответов
есть некоторые очень полезную информацию на этом сайте: 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

вот аналогичное решение с помощью 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}

кроме ярлыка.exe, вы также можете использовать версию командной строки NirCmd для создания ярлыка. http://nircmd.nirsoft.net/shortcut.html

Как насчет использования команды mklink ? C:\Windows\System32>mklink Создает символическую ссылку.
MKLINK [[/г] | [/ч] | [/ж]] ссылка элемент
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link
refers to.

после всех обсуждений, которые мы провели здесь, это мое предлагаемое решение:
скачать: http://optimumx.com/download/Shortcut.zip
распакуйте его на рабочем столе (например).
Теперь предположим, что вы хотите создать ярлык для файла с именем scrum.PDF (также на рабочем столе):
1. открыть cmd и перейдите в папку
2. run:Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
Это позволит создать ярлык под названием СК.lnk на рабочем столе, который будет указывать на исходный файл (scrum.pdf)

эта бесплатная программа имеет необходимый функционал http://www.nirsoft.net/utils/nircmd2.html: (образец от сказанной интернет-страницы)
"Create a shortcut to Windows calculator under Start Menu->Programs->Calculators nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"
мой собственный образец, который нужно попробовать: nircmd.ярлык exe-файла "c:\windows\system32\calc.папку exe-файла" "~$.desktop$ ""калькулятор Windows"

Я знаю, что эта тема старая, но я хочу предложить простое решение, которое работает для меня.
Я сначала скопировал .ico-файл на диск C:. Затем я создал ярлык на своем рабочем столе и установил значок в файл ico на моем диске C:. Я тогда скопировал оба диска .ico и ярлык сетевой папки, к которой имеют доступ мои пользователи. Как только я написал следующий пакетный файл, чтобы скопировать ICO и .url для пользователей Windows 7 desktop. Это создает ярлык на рабочем столе всех пользователей и сохраняет файл значков, который я установил при создании ярлыка. Надеюсь, это кому-то поможет.
@echo off
Copy "\sharename\folder\icon.ico" "C:\"
pause
copy "\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]