Создание ярлыка для exe с помощью пакетного файла

Я знаю, что такая тема уже существует, но я не хочу использовать сценарий VB.

Я надеюсь, что вы можете создать ярлык с помощью командной строки в DOS.

Пожалуйста, напишите какой-нибудь пример, это было бы здорово.

Спасибо!

AA


person anwarma    schedule 09.02.2010    source источник


Ответы (4)


Создание ярлыка в формате .lnk в принципе невозможно из пакетного файла без вызова какой-либо внешней программы. Спецификацию файла можно найти здесь, а беглый взгляд объяснит.

Создать ярлык формата .url довольно просто, так как формат представляет собой простой текстовый файл. Спецификацию можно найти здесь. Этот формат имеет несколько недостатков, но может помочь в достижении вашей цели.

person Chris S    schedule 09.02.2010
comment
То, что вы связали, является не спецификацией, а обратной разработкой формата. Актуальную спецификацию можно найти по адресу msdn.microsoft.com/ en-us/library/dd871305(PROT.10).aspx - person Joey; 09.02.2010

Вы не можете создать ярлык в файле .bat без вызова внешней программы.

Однако каждая версия Windows, начиная с Win2k, имеет встроенный язык сценариев с именем Узел сценариев Windows

Вот небольшой сценарий WSH, который я написал несколько лет назад и который можно вызывать из файла .bat, просто сохраните этот текст как shortcut.wsf, он содержит информацию об использовании в сценарии.

<package>
 <job id="MakeShortcut">
  <runtime>
   <description>Create a shortcut (.lnk) file.</description>
   <named
     name = "Target"
     helpstring = "the target script"
     type = "string"
     required = "true"
   />
   <named
     name = "Args"
     helpstring = "arguments to pass to the script"
     type = "string"
     required = "false"
   />
   <unnamed
     name = "basename"
     helpstring = "basename of the lnk file to create"
     type = "string"
     required = "false"
   />
  </runtime>

  <script language="JScript">

   if ( ! WScript.Arguments.Named.Exists("Target"))
   {
      WScript.Arguments.ShowUsage();
      WScript.Quit(2);
   }

   target = WScript.Arguments.Named.Item("Target");
   WScript.Echo("target " + target);
   args   = WScript.Arguments.Named.Item("Args");
   WScript.Echo("args " + args);
   base = WScript.Arguments.Unnamed.Item(0);
   WScript.Echo("base " + base);

   fso   = WScript.CreateObject("Scripting.FileSystemObject");
   //path  = fso.GetParentFolderName(WScript.ScriptFullName);
   path  = fso.GetAbsolutePathName(".");
   WScript.Echo("path = " + path);
   Shell = WScript.CreateObject("WScript.Shell");

   short = fso.BuildPath(path,base);
   if ( ! fso.GetExtensionName(base))
      short = short + ".lnk";

   link  = Shell.CreateShortcut(short);
   link.TargetPath   = fso.BuildPath(path, target);
   if (args != null && args != "")
      link.Arguments = args;
   else
      link.Arguments = base;
   //link.Description = "Sound Forge script link";
   //link.HotKey = "ALT+CTRL+F";
   //link.IconLocation = fso.BuildPath(path, target) + ", 2";
   //link.WindowStyle = "1"
   //link.WorkingDirectory = path;
   link.Save();

  </script>
 </job>
</package>

запустите его без каких-либо аргументов, чтобы получить использование

c:\> shortcut.wsf
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

Create a shortcut (.lnk) file.
Usage: shortcut.wsf /Target:value [/Args:value] [basename]

Options:

Target   : the target script
Args     : arguments to pass to the script
basename : basename of the lnk file to create
person John Knoeller    schedule 09.02.2010
comment
Существует также PowerShell, который намного лучше;) - person Hamish Grubijan; 09.02.2010
comment
Все версии Windows, начиная с Win98, имеют WSH, PowerShell включен по умолчанию только в Win7 и Server 2008. С точки зрения переносимости кода нет никаких конкурентов. - person John Knoeller; 09.02.2010

mklink /D c:\vim "C:\Program Files (x86)\Vim"

Подробнее здесь

И Cygwin ln - s

http://en.wikipedia.org/wiki/Symbolic_link#Cygwin_symbolic_links

person Hamish Grubijan    schedule 09.02.2010
comment
subst - это хак для DOS только для букв дисков, он не имеет ничего общего с ярлыками. - person John Knoeller; 09.02.2010
comment
@John: Человек .... помните эти команды subst ... они использовались для создания буквы диска для реального вложенного подкаталога ... например, псевдонима для него ... - person t0mm13b; 09.02.2010
comment
Символическая ссылка на самом деле не подходит для подавляющего большинства программ. Windows — это не UNIX, и многие программы для Windows предполагают, что что-то находится в каталогах их приложений. Если вы сделаете на них символическую ссылку, они почти наверняка больше не будут работать. Я подозреваю, что вам нужна ссылка Shell (также известная как ярлык), для которой решение Джона на самом деле является правильным. - person Joey; 09.02.2010

вы можете получить shortcut.exe из комплекта ресурсов.

person ghostdog74    schedule 09.02.2010