如何在Windows中通过命令行创建快捷方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Windows中通过命令行创建快捷方式?相关的知识,希望对你有一定的参考价值。

我希望我的.bat脚本(test.bat)创建一个自己的快捷方式,以便我可以将它复制到我的Windows 8 Startup文件夹。

我写了这行代码来复制文件,但我还没有找到创建所述快捷方式的方法,因为你可以看到它只复制脚本。

xcopy "C:UsersGabrielDesktop	est.bat" "C:UsersGabrielAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup"

你能帮我吗?

答案

您可以使用PowerShell命令。将其粘贴在批处理脚本中,它将在%~f0中创建%userprofile%Start MenuProgramsStartup的快捷方式:

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

如果您不想使用PowerShell,可以使用mklink创建符号链接。句法:

mklink saveShortcutAs targetOfShortcut

有关完整语法,请参阅控制台窗口中的mklink /?,有关详细信息,请参阅this web page

在批处理脚本中,执行:

mklink "%userprofile%Start MenuProgramsStartup\%~nx0" "%~f0"

创建的快捷方式不是传统的.lnk文件,但它应该工作相同。请注意,只有.bat文件与启动文件夹在同一驱动器上运行时,才能使用此选项。此外,显然需要管理员权限才能创建符号链接。

另一答案

不能用纯批次。检查shortcutJS.bat - 它是一个jscript/bat混合,应该与.bat扩展使用:

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

使用-help,您可以查看其他选项(您可以设置图标,管理员权限等)

另一答案

Rohit Sahu的回答在Windows 10中对我最有效.TowerShell解决方案已经运行,但没有出现快捷方式。 JScript解决方案给了我语法错误。我没有尝试mklink,因为我不想搞乱权限。

我希望快捷方式显示在桌面上。但我还需要设置图标,描述和工作目录。请注意,MyApp48.bmp是一个48x48像素的图像。这是我的Rohit解决方案:

@echo off
cd c:MyApp
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%userprofile%DesktopMyApp.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:MyAppMyApp.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:MyApp" >> CreateShortcut.vbs
echo oLink.Description = "My Application" >> CreateShortcut.vbs
echo oLink.IconLocation = "C:MyAppMyApp48.bmp" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
另一答案

最好的方法是运行此批处理文件。打开记事本并输入: -

@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(保存选择所有文件类型时要小心)在win XP中运行良好。

另一答案

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
另一答案

我提出了一个小型混合脚本[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
::********************************************************************************************
另一答案

Nirsoft的NirCMD也可以从命令行创建快捷方式。 (还有一堆其他功能。)免费提供:

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

完整说明:http://www.nirsoft.net/utils/nircmd2.html#using(向下滚动到“快捷方式”部分。)

是的,使用nircmd确实意味着你正在使用另一个第三方.exe,但它可以执行一些功能而不是(大多数)上述解决方案(例如,在带有多个图标的dll中选择一个图标#,分配一个热键,并将快捷方式目标设置为最小化或最大化)。

虽然看起来上面的shortcutjs.bat解决方案也可以完成大部分工作,但是你需要挖掘更多以找到如何正确分配这些设置。 Nircmd可能更简单。

另一答案

我想提出不同的解决方案,这里没有提到使用.URL文件:

set SHRT_LOCA=%userprofile%Desktop
ew_shortcut2.url
set SHRT_DEST=C:Windowswrite.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
  • 即使禁用Windows资源管理器中的“隐藏已知文件类型的扩展名”选项,Microsoft Windows也不会显示.url文件扩展名
  • IconFileIconIndex是可选的
  • 作为参考,您可以查看Edward Blake的An Unofficial Guide to the URL File Format

以上是关于如何在Windows中通过命令行创建快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 命令行批处理脚本创建快捷方式

如何在python中通过命令行给出元组

在 MySQL Workbench 中通过快捷方式执行语句

shell命令行快捷键

如何在 C# 中使用命令行参数创建应用程序快捷方式(.lnk 文件)

在 macOS 中通过命令行与 Siri 交互