Как я могу создать файл ярлыка (.lnk
) для другого файла или исполняемого файла, используя утилиты командной строки?
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}
Помимо shortcut.exe, вы также можете использовать версию командной строки NirCmd для создания ярлыка. http://nircmd.nirsoft.net/shortcut.html
Как насчет использования команды mklink? C:\Windows\System32> mklink Создает символическую ссылку.
MKLINK [[/D] | [/H] | [/J]] Ссылка Target
/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. запустите: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
на рабочем столе будет создан ярлык sc.lnk, который будет указывать на оригинальный файл (scrum.pdf)
Я знаю, что эта тема старая, но я хотел предложить простое решение, которое сработало для меня.
Сначала я скопировал файл .ico на мой диск C:. Затем я создал ярлык на рабочем столе и установил значок на файл ico на диске C:. Затем я скопировал .ico и ярлык в сетевой ресурс, к которому у моих пользователей есть доступ. Оказавшись там, я написал следующий пакетный файл, чтобы скопировать ico и .url на рабочий стол пользователей Windows 7. Это создает ярлык на рабочем столе всех пользователей и сохраняет файл значков, который я установил при создании ярлыка. Я надеюсь, что это помогает кому-то.
@echo off
Copy "\\sharename\folder\icon.ico" "C:\"
pause
copy "\\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause
Эта бесплатная программа имеет необходимые функции 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" "~ $ folder.desktop $" "Калькулятор Windows"