标题: [其他] [分享]以管理员身份运行批处理路径包含特殊字符的情况 [打印本页]
作者: Batcher 时间: 2023-11-14 14:10 标题: [分享]以管理员身份运行批处理路径包含特殊字符的情况
【问题描述】
实验环境:
绝大部分情况下,使用以下代码可以实现双击bat脚本直接以管理员身份运行。
不需要右键单击bat脚本,再选择“以管理员身份运行”。- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""%~f0""","::",,"runas",1)(close) & exit /b
- echo Got administrator privilege.
- REM 根据实际需要修改下面待执行的命令
- fltmc
- pause
复制代码
但是,当bat脚本的文件名或其所在目录名称里面包含&等特殊字符的时候,上述代码会出错。
作者: Batcher 时间: 2023-11-14 14:10
【解决方案】- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
- echo Got administrator privilege.
- REM 根据实际需要修改下面待执行的命令
- fltmc
- pause
复制代码
作者: hnfeng 时间: 2023-11-15 14:37
本帖最后由 hnfeng 于 2023-11-15 14:44 编辑
谢谢分享,但是有一问题:
貌似不能再使用 %~nx0 之类的东东了
下面代码保存为 test(a) &admin.bat- @echo off
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("""cmd""","/c """"%~f0"""" ::",,"runas",1)(close) & exit /b
- title %~nx0
- ::echo %~nx0
- fltmc
- pause
复制代码
不管是 title %~nx0 或者 echo %~nx0,都会出现错误信息(就是 & 后面的内容当做命令来运行了,当然是找不到文件,不过如果真的有这个系统命令或可执行文件,就意外了)
也不管 title %~nx0 是在 mshta 行之前或之后,都有错误提示
另外虽然有这个错误提示,但是仍然取得了权限。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |