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

[文件操作] 【已解决】创建开始菜单的快捷方式,谢谢!

[复制链接]
发表于 2026-1-29 11:27:04 | 显示全部楼层 |阅读模式
本帖最后由 chishingchan 于 2026-1-30 09:36 编辑

批处理位于 E:\Program Files (x86)\批处理.cmd
搜狗安装于 E:\Program Files (x86)\SogouWBInput\5.2.0.2462

现在需要一个批处理创建快捷方式,但出错,求修正,谢谢!
  1. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""startmenu"") & ""\Programs\搜狗输入法\设置向导.lnk""):b.TargetPath=""%dp0SogouWBInput\5.2.0.2462\ImeUtil.exe"":b.Arguments=""-wizard"":b.Save:close")
复制代码
 楼主| 发表于 2026-1-29 11:48:22 | 显示全部楼层
  1. @echo off
  2. chcp 65001 >nul

  3. set "StartMenu=%APPDATA%\Microsoft\Windows\Start Menu\Programs\搜狗五笔输入法"
  4. if not exist "%StartMenu%" md "%StartMenu%"
  5. set "ShortcutName=设置向导.lnk"
  6. set "TargetPath=%~dp0SogouWBInput\5.2.0.2462\ImeUtil.exe"
  7. set "Arguments=-wizard"
复制代码
刚才问了 DeepSeek,给出了 powershell 方式的,运行正确:
  1. powershell -Command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('%StartMenu%\%ShortcutName%'); $s.TargetPath = '%TargetPath%'; $s.Arguments = '%Arguments%'; $s.Save()"
复制代码
还有一个 mshta 方式的,还是出错:
  1. mshta VBScript:Execute("Set ws = CreateObject(""WScript.Shell""): Set lnk = ws.CreateShortcut("""%StartMenu%\%ShortcutName%"""): lnk.TargetPath = """%TargetPath%""": lnk.Arguments = """%Arguments%""": lnk.Save: close")
复制代码
发表于 2026-1-29 15:37:47 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-1-29 15:42 编辑

回复 2# chishingchan

二楼 mshta+vbs 代码段订正如下

  1. mshta VBScript:Execute("Set ws=CreateObject(""WScript.Shell""):Set lnk=ws.CreateShortcut(""%StartMenu%\%ShortcutName%""):lnk.TargetPath=""%TargetPath%"":lnk.Arguments=""%Arguments%"":lnk.Save:close")
复制代码

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢老大!

查看全部评分

发表于 2026-1-29 18:29:23 | 显示全部楼层
改成vbs,bug11已经不支持玛沙特了
发表于 2026-1-30 09:04:17 | 显示全部楼层
  1. Dim targetPath
  2. Dim programGroupName
  3. Dim lnkName
  4. targetPath = "E:\Program Files (x86)\SogouWBInput\5.2.0.2462\ImeUtil.exe"
  5. programGroupName = "搜狗拼音"
  6. lnkName = "搜狗拼音工具"
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. Dim startMenuProgPath, programGroupPath
  9. startMenuProgPath = WshShell.SpecialFolders("Programs")
  10. programGroupPath = startMenuProgPath & "" & programGroupName
  11. lnkSavePath = programGroupPath & "" & lnkName & ".lnk"
  12. Set fso = CreateObject("Scripting.FileSystemObject")
  13. If Not fso.FolderExists(programGroupPath) Then
  14.     fso.CreateFolder(programGroupPath) ' 创建文件夹
  15. End If
  16. Set Shortcut = WshShell.CreateShortcut(lnkSavePath)
  17. Shortcut.TargetPath = targetPath
  18. Shortcut.Description = lnkName
  19. Shortcut.WindowStyle = 1
  20. Shortcut.IconLocation = "E:\Program Files (x86)\SogouWBInput\5.2.0.2462\SogouWBInput.exe,0"
  21. Shortcut.Save
  22. Set Shortcut = Nothing
  23. Set fso = Nothing
  24. Set WshShell = Nothing
  25. WScript.Echo "创建成功!" & vbCrLf & "程序组:开始菜单\所有程序\搜狗拼音" & vbCrLf & "快捷方式:" & lnkName
复制代码

评分

参与人数 1技术 +1 收起 理由
chishingchan + 1 谢谢!

查看全部评分

发表于 2026-1-30 19:52:00 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-1-30 20:01 编辑


用 win11 24h2 实测,确已移除了 mshta 的命令行用法,即1-3楼采用的句式(但运行 *.hta 脚本文件或 bat+mshta 混编脚本依然被支持),此后在批处脚本中调用 jscript/vbs 代码少了一条捷径,还好有 bat+jscript 混编方法和 bat+vbs 混编方法可用,或直接采取功能更为丰富的 powershell 平替。针对 bat+vbs 混编方法可参见 http://www.bathome.net/thread-70763-1-1.html,但其版式远不如 bat+jscript 混编方法简洁,尤其是需用多行批处代码时。以下是两个简单的示例代码用来创建系统内置计算器的桌面快捷方式,一是用 bat+jscript 混编方法,二是采用批处直调 powershell 方法。

一。用 bat+jscript 混编方法(存为 test1.bat 运行)

  1. 2>1/* ::
  2. @echo off &set "scF=%userprofile%\desktop\计算器.lnk" &set "tP=c:\windows\system32\calc.exe"
  3. cscript /nologo /e:jscript "%~f0" "%scF%" "%tP%" &exit/b */
  4. v=WSH.arguments, ws=WSH.createObject('wscript.shell'), sc=ws.createShortcut(v(0)), sc.targetPath=v(1), sc.save(), WSH.quit();
复制代码
二。批处直调 powershell 方法(存为 test2.bat 运行)

  1. @echo off &set "scF=%userprofile%\desktop\计算器.lnk" &set "tP=c:\windows\system32\calc.exe"
  2. powershell -c "$ws=New-Object -ComObject WScript.Shell; $lnk=$ws.CreateShortcut('%scF%'); $lnk.TargetPath='%tp%'; $lnk.Save()" &exit/b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:06 , Processed in 0.029085 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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