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

[其他] [分享]以管理员身份运行批处理路径包含特殊字符的情况

【问题描述】

实验环境:

  • Windows 10
  • Windows 11


绝大部分情况下,使用以下代码可以实现双击bat脚本直接以管理员身份运行。
不需要右键单击bat脚本,再选择“以管理员身份运行”。
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close) & exit /b
  3. echo Got administrator privilege.
  4. REM 根据实际需要修改下面待执行的命令
  5. fltmc
  6. pause
复制代码
但是,当bat脚本的文件名或其所在目录名称里面包含&等特殊字符的时候,上述代码会出错。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

本帖最后由 hnfeng 于 2023-11-15 14:44 编辑

谢谢分享,但是有一问题:
貌似不能再使用 %~nx0 之类的东东了
下面代码保存为 test(a) &admin.bat
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
  3. title %~nx0
  4. ::echo %~nx0
  5. fltmc
  6. pause
复制代码
不管是 title %~nx0 或者 echo %~nx0,都会出现错误信息(就是 & 后面的内容当做命令来运行了,当然是找不到文件,不过如果真的有这个系统命令或可执行文件,就意外了)
也不管 title %~nx0 是在 mshta 行之前或之后,都有错误提示
另外虽然有这个错误提示,但是仍然取得了权限。

TOP

【解决方案】
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
  3. echo Got administrator privilege.
  4. REM 根据实际需要修改下面待执行的命令
  5. fltmc
  6. pause
复制代码
2

评分人数

    • holley: 赞一个!很多人都是改实际代码中的特殊字符 ...技术 + 1
    • 77七: 感谢分享技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表