找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 117434|回复: 28

[系统相关] [已解决]批处理如何在桌面创建目标程序带参数的快捷方式?

[复制链接]
发表于 2014-12-3 00:25:10 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-17 12:14 编辑

[已解决]如何用bat批处理,在桌面建立“关机.lnk”快捷方式(带参数的特殊情况)?
快捷命令是:C:\WINDOWS\system32\shutdown.exe -s -t 1

下面2个bat命令,
因为带了 -s -t 2  这参数。虽然也可以创建快捷方式,但却不能运行。
如果不带这个参数,是可以创建快捷方式并运行的。
  1. ;创建文件的快捷方式
  2. set path=C:\WINDOWS\system32\shutdown.exe -s -t 2
  3. rem 要创建快捷方式的文件
  4. set result="%USERPROFILE%\桌面\关机.lnk"
  5. rem 要创建快捷方式的地方
  6. echo [InternetShortcut] >> %result%
  7. echo url="%path%" >> %result%
  8. rem url一定要写
  9. echo IconIndex=0 >> %result%
  10. echo IconFile=%path% >> %result%


  11. -----------------------------------------------
  12. ;创建exe文件的lnk快捷方式
  13. set SrcFile=%SystemRoot%\system32\shutdown -s -t 2
  14. set LnkFile==%USERPROFILE%\桌面\关机
  15. call :CreateShort "%SrcFile%" "%LnkFile%"
  16. goto :eof

  17. ::Arguments              目标程序参数
  18. ::Description            快捷方式备注
  19. ::FullName               返回快捷方式完整路径
  20. ::Hotkey                 快捷方式快捷键
  21. ::IconLocation           快捷方式图标,不设则使用默认图标
  22. ::TargetPath             目标
  23. ::WindowStyle            窗口启动状态
  24. ::WorkingDirectory       起始位置

  25. :CreateShort
  26. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-12-3 00:31:36 | 显示全部楼层
目测  -s -t 2 应该算 参数
 楼主| 发表于 2014-12-3 00:57:38 | 显示全部楼层
目测  -s -t 2 应该算 参数
apang 发表于 2014-12-3 00:31



    对啊。

就是因为带了 -s -t 2  这参数。虽然也可以创建快捷方式,但却不能运行。
如果不带这个参数,是可以创建快捷方式并运行的。
发表于 2014-12-3 07:03:21 | 显示全部楼层
set path=C:\WINDOWS\system32\shutdown.exe -s -t 2

set "path=C:\WINDOWS\system32\shutdown.exe -s -t 2"
 楼主| 发表于 2014-12-3 07:26:21 | 显示全部楼层
set path=C:\WINDOWS\system32\shutdown.exe -s -t 2

set "path=C:\WINDOWS\system32\shutdown.exe -s - ...
czjt1234 发表于 2014-12-3 07:03



    set "path=C:\WINDOWS\system32\shutdown.exe -s -t 2"

为啥要将path这个变量,放在""里面呢?
发表于 2014-12-3 09:11:45 | 显示全部楼层
回复 3# ygqiang
  1. ::创建exe文件的lnk快捷方式
  2. @echo off
  3. set "SrcFile=%SystemRoot%\system32\shutdown.exe"
  4. set "Args=-s -t 2"
  5. set "LnkFile=关机.LNK"
  6. call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
  7. pause & goto :eof

  8. ::Arguments              目标程序参数
  9. ::Description            快捷方式备注
  10. ::FullName               返回快捷方式完整路径
  11. ::Hotkey                 快捷方式快捷键
  12. ::IconLocation           快捷方式图标,不设则使用默认图标
  13. ::TargetPath             目标
  14. ::WindowStyle            窗口启动状态
  15. ::WorkingDirectory       起始位置

  16. :CreateShort
  17. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-12-3 09:22:35 | 显示全部楼层
回复  ygqiang
apang 发表于 2014-12-3 09:11



    多谢。不过你这个bat代码,通用性如何?

其实我是想在下面位置建立快捷方式:
%userprofile%\「开始」菜单\关机.lnk
发表于 2014-12-3 09:51:05 | 显示全部楼层
回复 7# ygqiang


    比你的通用性好。不同的系统,桌面路径不一样,%userprofile%\桌面 只适用于中文xp系统

另外,startmenu 对应的是 开始菜单
 楼主| 发表于 2014-12-3 09:57:51 | 显示全部楼层
回复  ygqiang
apang 发表于 2014-12-3 09:11



    多谢。。。


你给的代码可以在桌面生成快捷方式,并且可以运行。

xp系统下,如何修改成在下面位置建立快捷方式?
%userprofile%\「开始」菜单\关机.lnk

或者win7系统下,如何修改成在下面位置建立快捷方式?
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\accessories\

  1. ::创建exe文件的lnk快捷方式
  2. @echo off
  3. set "SrcFile=%SystemRoot%\system32\shutdown.exe"
  4. set "Args=-s -t 2"
  5. set "LnkFile=关机.LNK"
  6. call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
  7. pause & goto :eof

  8. ::Arguments              目标程序参数
  9. ::Description            快捷方式备注
  10. ::FullName               返回快捷方式完整路径
  11. ::Hotkey                 快捷方式快捷键
  12. ::IconLocation           快捷方式图标,不设则使用默认图标
  13. ::TargetPath             目标
  14. ::WindowStyle            窗口启动状态
  15. ::WorkingDirectory       起始位置

  16. :CreateShort
  17. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
发表于 2014-12-3 10:20:23 | 显示全部楼层
回复 9# ygqiang


    晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
 楼主| 发表于 2014-12-3 10:28:27 | 显示全部楼层
回复  ygqiang


    晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
apang 发表于 2014-12-3 10:20



   
回复  ygqiang


    晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
apang 发表于 2014-12-3 10:20



    多谢。再请教1个小问题。。


下面这个bat命令,在「开始」菜单建立快捷方式,并且可以运行。

win7系统下,如何修改成在下面位置建立快捷方式?
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\accessories\

startmenu改成accessories,好像也没用啊。

  1. ::创建exe文件的lnk快捷方式
  2. @echo off
  3. set "SrcFile=%SystemRoot%\system32\shutdown.exe"
  4. set "Args=-s -t 2"
  5. set "LnkFile=关机.LNK"
  6. call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
  7. pause & goto :eof

  8. ::Arguments              目标程序参数
  9. ::Description            快捷方式备注
  10. ::FullName               返回快捷方式完整路径
  11. ::Hotkey                 快捷方式快捷键
  12. ::IconLocation           快捷方式图标,不设则使用默认图标
  13. ::TargetPath             目标
  14. ::WindowStyle            窗口启动状态
  15. ::WorkingDirectory       起始位置

  16. :CreateShort
  17. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""startmenu"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
 楼主| 发表于 2014-12-3 11:33:47 | 显示全部楼层
已经解决。

  1. ::创建exe文件的lnk快捷方式
  2. @echo off
  3. set "SrcFile=%SystemRoot%\system32\shutdown.exe"
  4. set "Args=-s -t 2"
  5. set "LnkFile=关机.LNK"
  6. call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
  7. pause & goto :eof

  8. ::Arguments              目标程序参数
  9. ::Description            快捷方式备注
  10. ::FullName               返回快捷方式完整路径
  11. ::Hotkey                 快捷方式快捷键
  12. ::IconLocation           快捷方式图标,不设则使用默认图标
  13. ::TargetPath             目标
  14. ::WindowStyle            窗口启动状态
  15. ::WorkingDirectory       起始位置

  16. :CreateShort
  17. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
发表于 2015-3-19 12:42:18 | 显示全部楼层
回复 6# apang




    ::IconLocation
我想修改快捷方式的图标文件指向,这个添加到哪里?谢谢!
发表于 2015-3-19 13:22:21 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-22 12:22 编辑

回复 13# freesoft00
  1. ::创建exe文件的lnk快捷方式
  2. @echo off
  3. set "SrcFile=%SystemRoot%\system32\shutdown.exe"
  4. set "Args=-s -t 2"
  5. set "LnkFile=关机.LNK"
  6. set "IconPath=C:\1.ico"
  7. call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%" "%IconPath%"
  8. pause & goto :eof

  9. ::Arguments              目标程序参数
  10. ::Description            快捷方式备注
  11. ::FullName               返回快捷方式完整路径
  12. ::Hotkey                 快捷方式快捷键
  13. ::IconLocation           快捷方式图标,不设则使用默认图标
  14. ::TargetPath             目标
  15. ::WindowStyle            窗口启动状态
  16. ::WorkingDirectory       起始位置

  17. :CreateShort
  18. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.IconLocation=""%~4"":b.Save:close")
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-3-19 22:49:24 | 显示全部楼层
回复 14# pcl_test


    好的,再次谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:14 , Processed in 0.024351 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表