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

我想我的.bat脚本(test.bat)创build一个自己的快捷方式,以便我可以将其复制到我的Windows 8启动文件夹。

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

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

你能帮我吗?

Solutions Collecting From Web of "如何在Windows中通过命令行创build快捷方式?"

你可以使用PowerShell命令。 将其粘贴到批处理脚本中,它会在%userprofile%\Start Menu\Programs\Startup创建%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 /? 在完整语法的控制台窗口中,以及此网页获取更多信息。

在批处理脚本中,执行:

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

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

无法用纯批处理。检查快捷方式 JS.bat – 这是一个jscript/bat杂交,应与.bat扩展名一起使用:

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

随着-help你可以检查其他选项(你可以设置图标,管理员权限等)

Rohit Sahu的答案在Windows 10中最适合我.PowerShell解决方案运行,但没有捷径出现。 JScript解决方案给了我语法错误。 我没有尝试mklink,因为我不想混乱权限。

我希望快捷方式出现在桌面上。 但是我也需要设置图标,描述和工作目录。 请注意,MyApp48.bmp是一个48×48像素的图像。 这是我的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 

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

最好的方法是运行这个批处理文件。 打开记事本并键入: –

 @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