Подтвердить что ты не робот

Как создать ярлык через командную строку в Windows?

Я хочу, чтобы мой .bat script (test.bat) создавал ярлык для себя, чтобы я мог его скопировать в папку "Автозагрузка Windows 8".

Я написал эту строку кода для копирования файла, но я еще не нашел способ создать указанный ярлык, так как вы можете видеть, что он копирует только script.

xcopy "C:\Users\Gabriel\Desktop\test.bat" "C:\Users\Gabriel\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

Вы можете помочь мне?

4b9b3361

Ответ 1

Вы можете использовать команду PowerShell. Вставьте это в свой пакет script, и он создаст ярлык для %~f0 в %userprofile%\Start Menu\Programs\Startup:

powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Start Menu\Programs\Startup\%~n0.lnk');$s.TargetPath='%~f0';$s.Save()"

Если вы предпочитаете не использовать PowerShell, вы можете использовать mklink для создания символической ссылки. Синтаксис:

mklink saveShortcutAs targetOfShortcut

См. mklink /? в окне консоли для полного синтаксиса и эту веб-страницу для получения дополнительной информации.

В вашей партии script выполните:

mklink "%userprofile%\Start Menu\Programs\Startup\%~nx0" "%~f0"

Созданный ярлык не является традиционным .lnk файлом, но он должен работать тем же. Обратите внимание, что это будет работать только в том случае, если файл .bat запускается с того же диска, что и ваша загрузочная папка. Кроме того, очевидно, что права администратора необходимы для создания символических ссылок.

Ответ 2

Не может быть сделано с чистым пакетом. Проверьте shortcutJS.bat - это гибрид jscript/bat и должен использоваться с расширением .bat:

call shortcutJS.bat -linkfile "%~n0.lnk" -target  "%~f0" -linkarguments "some arguments"

С помощью -help вы можете проверить другие параметры (вы можете установить значок, разрешения администратора и т.д.)

Ответ 3

Ответ Rohit Sahu работал лучше всего для меня в Windows 10. Решение PowerShell работало, но никаких ярлыков не появилось. Решение JScript дало мне синтаксические ошибки. Я не пытался mklink, так как я не хотел общаться с разрешениями.

Я хотел, чтобы ярлык отображался на рабочем столе. Но мне также нужно было установить значок, описание и рабочий каталог. Обратите внимание, что MyApp48.bmp - это изображение размером 48x48 пикселей. Здесь мой мод решения Rohit:

@echo off
cd c:\MyApp
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%userprofile%\Desktop\MyApp.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\MyApp\MyApp.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:\MyApp" >> CreateShortcut.vbs
echo oLink.Description = "My Application" >> CreateShortcut.vbs
echo oLink.IconLocation = "C:\MyApp\MyApp48.bmp" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs

Ответ 4

Лучший способ - запустить этот командный файл. открыть блокнот и введите: -

@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "GIVETHEPATHOFLINK.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "GIVETHEPATHOFTARGETFILEYOUWANTTHESHORTCUT" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs

Сохранить как filename.bat(будьте осторожны при сохранении, выберите все типы файлов) хорошо работал в победе XP.

Ответ 5

link.vbs

set fs  = CreateObject("Scripting.FileSystemObject")
set ws  = WScript.CreateObject("WScript.Shell")
set arg = Wscript.Arguments

linkFile = arg(0)

set link = ws.CreateShortcut(linkFile)
    link.TargetPath = fs.BuildPath(ws.CurrentDirectory, arg(1))
    link.Save

Команда

C:\dir>link.vbs ..\shortcut.txt.lnk target.txt

Ответ 6

Nirsoft NirCMD также может создавать ярлыки из командной строки. (Наряду с кучей других функций.) Бесплатно и доступно здесь:

http://www.nirsoft.net/utils/nircmd.html

Полная инструкция здесь: http://www.nirsoft.net/utils/nircmd2.html#using (Прокрутите вниз до раздела "ярлык".)

Да, использование nircmd означает, что вы используете другой сторонний .exe файл, но он может выполнять некоторые функции, не входящие в (большинство) вышеперечисленных решений (например, выбрать значок # в dll с несколькими значками, назначить горячую клавишу и установите кратчайшие или минимальные целевые значения).

Хотя кажется, что решение shortcutjs.bat, описанное выше, тоже может сделать это, но вам нужно больше копать, чтобы найти, как правильно назначить эти настройки. Nircmd, вероятно, проще.

Ответ 7

Я представляю небольшой гибридный script [BAT/VBS], чтобы создать ярлык на рабочем столе. И вы можете, конечно, модифицировать его в своих целях.

@echo off
mode con cols=87 lines=5 & color 9B
Title Shortcut Creator for your batch and applications files by Hackoo 2015
Set MyFile=%~f0
Set ShorcutName=HackooTest
(
echo Call Shortcut("%MyFile%","%ShorcutName%"^)
echo ^'**********************************************************************************************^)
echo Sub Shortcut(ApplicationPath,Nom^)
echo    Dim objShell,DesktopPath,objShortCut,MyTab
echo    Set objShell = CreateObject("WScript.Shell"^)
echo    MyTab = Split(ApplicationPath,"\"^)
echo    If Nom = "" Then
echo    Nom = MyTab(UBound(MyTab^)^)
echo    End if
echo    DesktopPath = objShell.SpecialFolders("Desktop"^)
echo    Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Nom ^& ".lnk"^)
echo    objShortCut.TargetPath = Dblquote(ApplicationPath^)
echo    ObjShortCut.IconLocation = "Winver.exe,0"
echo    objShortCut.Save
echo End Sub
echo ^'**********************************************************************************************
echo ^'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo    DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo ^'**********************************************************************************************
) > Shortcutme.vbs
Start /Wait Shortcutme.vbs
Del Shortcutme.vbs
::***************************************Main Batch*******************************************
cls
echo Done and your main batch goes here !
echo i am a test 
Pause > Nul
::********************************************************************************************

Ответ 8

Я хотел бы предложить другое решение, которое здесь не упоминалось, с использованием файлов .URL:

set SHRT_LOCA=%userprofile%\Desktop\new_shortcut2.url
set SHRT_DEST=C:\Windows\write.exe
echo [InternetShortcut]> %SHRT_LOCA%
echo URL=file:///%SHRT_DEST%>> %SHRT_LOCA%
echo IconFile=%SHRT_DEST%>> %SHRT_LOCA%
echo IconIndex=0>> %SHRT_LOCA%

Примечание:

  • По умолчанию файлы .url предназначены для открытия веб-страниц, но они отлично работают для любого правильно сконструированного URI
  • Microsoft Windows не отображает расширение файла .url, даже если в Проводнике Windows отключена опция "Скрыть расширения для известных типов файлов"
  • IconFile и IconIndex являются необязательными
  • Для справки вы можете проверить Неофициальное руководство по формату файлов URL Эдварда Блейка.