[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理如何创建桌面快捷键?

比如d:\SBRS\Support目录下有一个SBRS.exe文件,若我想将其发送到桌面快捷键,点中然后鼠标右键,然后“发送到-->桌面快捷方式”的方法即可完成。那么用DOS怎样实现?并且做到
1)如果桌面已经有该快捷方式的话,就不要再次生成一个桌面快捷方式(也就是判断桌面已有此快捷方式则不生成,若没用,则生成)。
2)将默认生成的“快捷方式 到 SBRS.exe"字样改为“SBRS"

嘿嘿,试试???
  1. @echo off
  2. for /f "tokens=2*" %%a in ('reg query "hklm\software\tencent\qq"^|find /i "install"') do (set "JustIt=%%bqq.exe")
  3. set "DstLk=SBRS.url"
  4. if not exist "%userprofile%\桌面\%DstLk%" (
  5.   >"%userprofile%\桌面\%DstLk%" echo [internetshortcut]
  6.   >>"%userprofile%\桌面\%DstLk%" echo url="d:\SBRS\Support\SBRS.EXE"
  7.   >>"%userprofile%\桌面\%DstLk%" echo Iconfile="%JustIt%"
  8.   >>"%userprofile%\桌面\%DstLk%" echo IconIndex=^0
  9. )
复制代码

TOP

建立桌面快捷方式

用下面的代码保存为一个BAT文件后, 把需要建桌面快捷方式的文件拖到这个BAT文件上(也就是作为参数 %1), 就可以了
  1. @echo off
  2. echo wscript.echo CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\desktop")>t~.vbs
  3. for /f "delims=" %%a in ('cscript //nologo t~.vbs') do set "mydesk=%%a"
  4. (set fnLnk=%~n1.lnk)&(set fnFull=%~f1)
  5. if exist "%mydesk%\%fnLnk%" msg %username% 快捷方式文件 %mydesk%\%fnLnk% 已经存在. 请先删除或重命名此文件再重试.
  6. (set fnFull=%fnFull:\=\\%)
  7. if "%~x1" equ ".exe" (set iconPath=%~f1) else (set iconPath=%SystemRoot%\system32\SHELL32.dll)
  8. (set iconPath=%iconPath:\=\\%)
  9. (set vbsfn=%HomeDrive%\scuttemp.vbs)
  10. echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>%vbsfn%
  11. echo ' 创建一个快捷方式对象,其在桌面上设置相同的名字>>%vbsfn%
  12. echo strDesktop = WshShell.SpecialFolders("Desktop")>>%vbsfn%
  13. echo Set oShellLink = WshShell.CreateShortcut(strDesktop ^& "\\%fnLnk%")>>%vbsfn%
  14. echo ' 设置快捷方式的执行路径>>%vbsfn%
  15. echo oShellLink.TargetPath = "%fnFull%">>%vbsfn%
  16. echo oShellLink.WindowStyle = 1              ' 运行方式>>%vbsfn%
  17. echo oShellLink.Hotkey = ""                  ' 设置快捷方式的快捷键>>%vbsfn%
  18. echo oShellLink.IconLocation = "%iconPath%"  ' 设置快捷方式的图标路径>>%vbsfn%
  19. echo oShellLink.Description = "%~f1"         ' 设置快捷方式的描述>>%vbsfn%
  20. echo oShellLink.WorkingDirectory = "%~dp1"   ' 起始位置>>%vbsfn%
  21. echo oShellLink.Save>>%vbsfn%
  22. cscript //nologo %vbsfn%
复制代码

TOP

建立桌面快捷方式 改良代码

改良后建立的快捷方式将完全和系统建立的一样, 根据文件类型 而选择适合的图标
  1. @echo off
  2. (set att=%~a1)
  3. echo wscript.echo CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\desktop")>t~.vbs
  4. for /f "delims=" %%a in ('cscript //nologo t~.vbs') do set "mydesk=%%a"
  5. (set fnLnk=%~n1.lnk)&(set fnFull=%~f1)
  6. if exist "%mydesk%\%fnLnk%" msg %username% 快捷方式文件 %mydesk%\%fnLnk% 已经存在. 请先删除或重命名此文件再重试.
  7. (set fnFull=%fnFull:\=\\%)
  8. (set iconPath=%iconPath:\=\\%)
  9. (set vbsfn=%HomeDrive%\scuttemp.vbs)
  10. echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>%vbsfn%
  11. echo ' 创建一个快捷方式对象,其在桌面上设置相同的名字>>%vbsfn%
  12. echo strDesktop = WshShell.SpecialFolders("Desktop")>>%vbsfn%
  13. echo Set oShellLink = WshShell.CreateShortcut(strDesktop ^& "\\%fnLnk%")>>%vbsfn%
  14. echo ' 设置快捷方式的执行路径>>%vbsfn%
  15. echo oShellLink.TargetPath = "%fnFull%">>%vbsfn%
  16. echo oShellLink.WindowStyle = 1              ' 运行方式>>%vbsfn%
  17. echo oShellLink.Hotkey = ""                  ' 设置快捷方式的快捷键>>%vbsfn%
  18. if /i "%att:~0,1%" equ "d" (call :setDirIcon)
  19. echo oShellLink.Description = "%~f1"         ' 设置快捷方式的描述>>%vbsfn%
  20. echo oShellLink.WorkingDirectory = "%~dp1"   ' 起始位置>>%vbsfn%
  21. echo oShellLink.Save>>%vbsfn%
  22. cscript //nologo %vbsfn%
  23. exit /b
  24. :setDirIcon
  25. echo oShellLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 3"  ' 设置文件夹快捷方式的图标路径>>%vbsfn%
  26. exit /b
复制代码

TOP

再改一下, 修正不能打开文件夹快捷方式的问题

4 楼代码建立的文件夹快捷方式不能打开, 修正如下:
  1. @echo off
  2. (set att=%~a1)
  3. echo wscript.echo CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\desktop")>t~.vbs
  4. for /f "delims=" %%a in ('cscript //nologo t~.vbs') do set "mydesk=%%a"
  5. (set fnLnk=%~n1.lnk)&(set fnFull=%~f1)
  6. if exist "%mydesk%\%fnLnk%" msg %username% 快捷方式文件 %mydesk%\%fnLnk% 已经存在. 请先删除或重命名此文件再重试.
  7. (set fnFull=%fnFull:\=\\%)
  8. (set iconPath=%iconPath:\=\\%)
  9. (set vbsfn=%HomeDrive%\scuttemp.vbs)
  10. echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>%vbsfn%
  11. echo ' 创建一个快捷方式对象,其在桌面上设置相同的名字>>%vbsfn%
  12. echo strDesktop = WshShell.SpecialFolders("Desktop")>>%vbsfn%
  13. echo Set oShellLink = WshShell.CreateShortcut(strDesktop ^& "\\%fnLnk%")>>%vbsfn%
  14. echo ' 设置快捷方式的执行路径>>%vbsfn%
  15. echo oShellLink.TargetPath = "%fnFull%">>%vbsfn%
  16. echo oShellLink.WindowStyle = 1              ' 运行方式>>%vbsfn%
  17. echo oShellLink.Hotkey = ""                  ' 设置快捷方式的快捷键>>%vbsfn%
  18. if /i "%att:~0,1%" equ "d" (
  19.   call :setDirIcon
  20.   echo oShellLink.TargetPath = "%SystemRoot%\explorer.exe">>%vbsfn%
  21.   echo oShellLink.Arguments = "%fnFull:\\=\%\">>%vbsfn%
  22. )
  23. echo oShellLink.Description = "%~f1"         ' 设置快捷方式的描述>>%vbsfn%
  24. if /i "%att:~0,1%" neq "d" echo oShellLink.WorkingDirectory = "%~dp1"   ' 起始位置>>%vbsfn%
  25. echo oShellLink.Save>>%vbsfn%
  26. cscript //nologo %vbsfn%
  27. exit /b
  28. :setDirIcon
  29. echo oShellLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 3"  ' 设置文件夹快捷方式的图标路径>>%vbsfn%
  30. exit /b
复制代码

TOP

如果不用文件拖到的方式,直接写在程序里面呢?

TOP

回复 6楼 的帖子

把主程序变成 子程序 调用, 参数用你要的文件路径就行了:
  1. @echo off
  2. (set fName="d:\SBRS\Support\SBRS.exe")
  3. rem 如果要用手工输入任意文件路径, 建立快捷方式, 请把下面的一行前面的 rem 去掉, 让代码生效
  4. rem set /p fName=请输入文件全路径(含空格请用双引号括起)(或将文件拖入此窗口):
  5. call :DeskLink %fName%
  6. exit
  7. :DeskLink
  8. (set att=%~a1)
  9. echo wscript.echo CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\desktop")>%HomeDrive%\t~.vbs
  10. for /f "delims=" %%a in ('cscript //nologo %HomeDrive%\t~.vbs') do set "mydesk=%%a"
  11. (set fnLnk=%~n1.lnk)&(set fnFull=%~f1)
  12. if exist "%mydesk%\%fnLnk%" msg %username% 快捷方式文件 %mydesk%\%fnLnk% 已经存在. 请先删除或重命名此文件再重试.
  13. (set fnFull=%fnFull:\=\\%)
  14. (set iconPath=%iconPath:\=\\%)
  15. (set vbsfn=%HomeDrive%\scuttemp.vbs)
  16. echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>%vbsfn%
  17. echo ' 创建一个快捷方式对象,其在桌面上设置相同的名字>>%vbsfn%
  18. echo strDesktop = WshShell.SpecialFolders("Desktop")>>%vbsfn%
  19. echo Set oShellLink = WshShell.CreateShortcut(strDesktop ^& "\\%fnLnk%")>>%vbsfn%
  20. echo ' 设置快捷方式的执行路径>>%vbsfn%
  21. echo oShellLink.TargetPath = "%fnFull%">>%vbsfn%
  22. echo oShellLink.WindowStyle = 1              ' 运行方式>>%vbsfn%
  23. echo oShellLink.Hotkey = ""                  ' 设置快捷方式的快捷键>>%vbsfn%
  24. if /i "%att:~0,1%" equ "d" (
  25.   call :setDirIcon
  26.   echo oShellLink.TargetPath = "%SystemRoot%\explorer.exe">>%vbsfn%
  27.   echo oShellLink.Arguments = "%fnFull:\\=\%\">>%vbsfn%
  28. )
  29. echo oShellLink.Description = "%~f1"         ' 设置快捷方式的描述>>%vbsfn%
  30. if /i "%att:~0,1%" neq "d" echo oShellLink.WorkingDirectory = "%~dp1"   ' 起始位置>>%vbsfn%
  31. echo oShellLink.Save>>%vbsfn%
  32. cscript //nologo %vbsfn%
  33. exit /b
  34. :setDirIcon
  35. echo oShellLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 3"  ' 设置文件夹快捷方式的图标路径>>%vbsfn%
  36. exit /b
复制代码

TOP

找了很久,很好用!感谢分享!

TOP

谢谢!我也正需要这个。

TOP

返回列表