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

[文件操作] 如何用if exist 后面跟mshta VBScript:Execute

[复制链接]
发表于 2025-5-20 09:45:09 | 显示全部楼层 |阅读模式
  1. if exist "C:\Program Files\RustDesk\RustDesk.exe" (
  2. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
  3. )
复制代码


单独运行mshta创建快捷方式是没有问题的,但是我想添加一个if的条件语句,于是就弹出上面的脚本错误,不知该如何解决呢?
发表于 2025-5-20 10:53:15 | 显示全部楼层
回复 1# kidzgy

规避 cmd 对 if ... () 语块中的双引号和括号的特殊解析要求,改为如下句式即可...

  1. @echo off & if not exist "C:\Program Files\RustDesk\RustDesk.exe" exit/b
  2. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
复制代码
 楼主| 发表于 2025-5-20 11:34:49 | 显示全部楼层
回复 2# aloha20200628


    感谢解答!实际上,在创建快捷方式后,我后面还有其他代码要执行,你这种情况是适合将创建快捷方式放到最后一行执行。

还是得用回call,才能解决上面的冲突了。
  1. if exist "C:\Program Files\RustDesk\RustDesk.exe" call :lnk
  2. pause

  3. :lnk
  4. mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
  5. goto :eof
复制代码
发表于 2025-5-20 11:50:21 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-20 11:51 编辑

回复 3# kidzgy

二楼代码只是针对一楼的示例代码,不一定仅适用于 ‘最后一行’ 的特定实况... 总之能帮助楼主解决问题就是好事
发表于 2025-5-20 12:04:02 | 显示全部楼层
在倒数第二个右括号前加一个脱字符:b.Save:close"^)
 楼主| 发表于 2025-5-20 12:14:27 | 显示全部楼层
回复 5# buyiyang


    能生效了!好神奇,为什么唯独在最后一个括号才需要加^
发表于 2025-5-20 16:37:24 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-20 16:40 编辑

回复 1# kidzgy

若采用 mshta 网页代码的句式即可顺利载入一楼 vbs 核心代码,不必再费周折应付 cmd 对 if ... () 复合语块中双引号和括号的特殊解析要求了...

  1. if exist "C:\Program Files\RustDesk\RustDesk.exe" (
  2.   mshta vbscript:"<script type=text/vbscript>set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close</script>"
  3. )
复制代码
 楼主| 发表于 2025-5-20 16:46:38 | 显示全部楼层
回复 7# aloha20200628


    感谢解答!长见识了!
发表于 2025-5-20 20:35:56 | 显示全部楼层
  1. if exist "C:\Program Files\RustDesk\RustDesk.exe" mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
复制代码

  1. set vbsline=mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
  2. if exist "C:\Program Files\RustDesk\RustDesk.exe" (
  3.         call %%vbsline%%
  4. )
复制代码


  1. set vbsline=mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\RustDesk.lnk""):b.TargetPath=""C:\Program Files\RustDesk\RustDesk.exe"":b.WorkingDirectory=""C:\Program Files\RustDesk"":b.Arguments=""--tray"":b.Save:close")
  2. if exist "C:\Program Files\RustDesk\RustDesk.exe" (
  3.         setlocal enabledelayedexpansion
  4.         !vbsline!
  5.         endlocal
  6. )
复制代码
发表于 2025-5-21 18:39:03 | 显示全部楼层
本帖最后由 jiavip 于 2025-5-22 00:03 编辑

回复 8# kidzgy


    7楼是大牛,应该是网页开发相关领域的。擅长网页开发代码,ASP,JS,VBS,PHP之类的,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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