Создаем ярлык через командную строку

  • 01.05.2021
  • 11 218
  • 4
  • 29.11.2022
  • 19
  • 19
  • 0
Создаем ярлык через командную строку

Вступление

При создании bat файлов для автоматизации различных действий, мне не раз приходила мысль о необходимости создания ярлыков через командную строку. К сожалению, обычными средствами командной строки это не сделать. В результате, пришлось искать обходной путь, которым оказался встроенный в Windows язык сценариев VBSscript.

Вызываем код VBScript из командной строки

Один из вариантов использования VBScript заключается в том, что через команду echo из командной строки будет создан vbs файл, который затем будет выполнен и удален. В примере ниже, мы создадим ярлык для Блокнота:

echo Set objShell = CreateObject("WScript.Shell") > %TEMP%\CreateShortcut.vbs
echo Set objLink = objShell.CreateShortcut("%USERPROFILE%\Desktop\Блокнот.lnk") >> %TEMP%\CreateShortcut.vbs
echo objLink.Description = "Запуск Блокнота" >> %TEMP%\CreateShortcut.vbs
echo objLink.TargetPath = "C:\Windows\System32\Notepad.exe" >> %TEMP%\CreateShortcut.vbs
echo objLink.Save >> %TEMP%\CreateShortcut.vbs
cscript %TEMP%\CreateShortcut.vbs
del %TEMP%\CreateShortcut.vbs

Используем отдельный файл VBScript для создания ярлыков

Другой вариант создания ярлыка через командную строку - использования отдельного файла скрипта, написанного на VBScript. Для этого, нужно создать файл формата vbs следующего содержания, и сохранить его в каком-нибудь удобном для себя месте:

Set objShell = CreateObject("WScript.Shell")

' Проверяем, что получили какие-то параметры
If WScript.Arguments.Count > 0 Then
	Set colArgs = WScript.Arguments.Named
	' Описание ярлыка
	strDescription = colArgs.Item("description")
	' Путь для сохранения создаваемого ярлыка
	strDestination = colArgs.Item("destination")
	' Пользовательский значок создаваемого ярлыка
	strIcon = colArgs.Item("icon")
	' Имя создаваемого ярлыка
	strName = colArgs.Item("name")
	' Путь к объекту, на который ссылается ярлык
	strSource = colArgs.Item("source")

	Set objLink = objShell.CreateShortcut(strDestination & "\" & strName & ".lnk")
	' Устанавливаем описание ярлыка, только если задан аргумент description
	If 0 < Len(strDescription) Then
		objLink.Description = strDescription
	End If
	' Устанавливаем пользовательский значок, только если задан аргумент icon
	If 0 < Len(strIcon) Then
		objLink.IconLocation = strIcon
	End If
	objLink.TargetPath = strSource
	objLink.Save
End If

После сохранения данного файла, можно вызвать его через командную строку, и передать все нужные для создания ярлыка параметры.

Поддерживаемые параметры:

  • /source:[ПУТЬ] - обязательный параметр, полный путь к директории или файлу, на который будет ссылаться ярлык.
    Пример: /source:"C:\Windows\System32\Notepad.exe"
  • /destination:[ПУТЬ] - обязательный параметр, путь к директории, в которой следует создать ярлык.
    Пример: /destination:"%USERPROFILE%\Desktop"
  • /name:[ИМЯ] - обязательный параметр, имя создаваемого ярлыка.
    Пример: /name:"Блокнот"
  • /description:[ОПИСАНИЕ] - необязательный параметр, описание создаваемого ярлыка, которое будет появляться при наведении на него курсором мыши.
    Пример: /description:"Запуск Блокнота"
  • /icon:[ПУТЬ К ФАЙЛУ,ИНДЕКС ЗНАЧКА] - необязательный параметр, пользовательский значок. Следует указать путь к файлу со значками (например, C:\Windows\System32\mmcndmgr.dll), и индекс значка в этом файле (например, 40).
    Пример: /icon:"C:\Windows\System32\mmcndmgr.dll, 40"

Примеры использования:

Создаем ярлык для Блокнота:

CreateShortcut.vbs /source:"C:\Windows\System32\Notepad.exe" /destination:"%USERPROFILE%\Desktop" /name:"Блокнот"

Обычный ярлык.

Создаем ярлык для Блокнота, добавляем ему описание и модный значок:

CreateShortcut.vbs /source:"C:\Windows\System32\Notepad.exe" /destination:"%USERPROFILE%\Desktop" /name:"Блокнот" /description:"Запуск Блокнота" /icon:"C:\Windows\System32\mmcndmgr.dll, 40"

Ярлык с другим значком.

Была ли эта статья Вам полезна?

Комментарии к статье (4)

    • Разраб11Винды

    Прикольно

    • Сергей

    Добавил бы ещё команду help, но и на том большое спасибо

    • Parry Lee

    %USERPROFILE%\Desktop не универсально. расположение desktop можно изменить и оно перестанет быть в %USERPROFILE%. А скрипт выдаст ошибку.
    я с vbs не близко знаком, но, думаю, стоит добавить поиск desktop через реестр
    "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"

      • Recluse

      Так-то да, но в данном случае, %USERPROFILE%\Desktop это просто пример - сам данный скрипт предполагается как универсальный, и просто создает ярлык для нужного файла/директории в указанной локации, с указанными параметрами.

Добавить комментарий для Сергей

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.