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

[文件操作] 在含有特殊字符的文件夹执行含有空格文件名的批处理,无法以管理员权限运行

[复制链接]
发表于 2022-9-13 09:29:27 | 显示全部楼层 |阅读模式
本帖最后由 fly9902 于 2022-9-13 09:36 编辑

如题:

例如     D:\@x265Encode\安装设置 - 复制.bat

文件夹含有@,批处理文件名含有空格,这两个条件同时具备的时候
这个批处理就无法获取以管理员权限运行,表现为一跳而过,后面的任何命令都无法执行,但如果去掉获取管理员权限的命令,后面的命令式可以正常执行的



@Echo OFF
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~dpnx0"" ::","","runas",1)(window.close)&&exit cd /d "%~dp0"



或者


@Echo OFF
setlocal EnableDelayedExpansion
Pushd %~dp0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas


都无法运行,求教
发表于 2022-9-13 10:58:07 | 显示全部楼层
回复 1# fly9902


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

你用的系统是Win7还是Win10?试试这样可以吗:
  1. @echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~s0","::",,"runas",1)(close)&exit /b
  3. echo %cd%
  4. pause
复制代码
 楼主| 发表于 2022-9-13 11:24:13 | 显示全部楼层
回复  fly9902


请参考Q-04把bat文件保存为ANSI编码:


你用的系统是Win7还是Win10?试试这样可以 ...
Batcher 发表于 2022-9-13 10:58



   
批处理是ANSI编码的,操作系统是win11 22621.382,换你这个还是不行,一跳而过,都等不到pause让你暂停
发表于 2022-9-13 15:42:16 | 显示全部楼层
本帖最后由 yakeyun 于 2022-9-13 17:18 编辑

回复 3# fly9902

同版本系统,测试正常。
  1. @echo off & setlocal enabledelayedexpansion

  2. Pushd %~dp0 & cd /d "%~dp0"
  3. %1 %2
  4. mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
  5. :runas


  6. title 批处理程序 by.SanLi
  7. color 07
  8. mode con: cols=80 lines=25
  9. chcp 936 >nul
  10. echo 当前系统时间:%date% %time%

  11. pause >nul
  12. exit
复制代码
 楼主| 发表于 2022-9-13 17:36:02 | 显示全部楼层
回复  fly9902

同版本系统,测试正常。
yakeyun 发表于 2022-9-13 15:42



   

放到带有@名称的文件夹运行就会一跳而过
发表于 2022-9-14 06:29:21 | 显示全部楼层
  1. @Echo OFF
  2. %1 %2
  3. mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
  4. :runas
  5. cd /d "%~dp0"
  6. echo runas1:"%~f0" "%~s0"
  7. setlocal EnableDelayedExpansion
  8. echo runas2:"%~f0" "%~s0"
  9. endlocal
  10. pause
复制代码
 楼主| 发表于 2022-9-24 22:07:45 | 显示全部楼层
flashercs 发表于 2022-9-14 06:29



   
成功,谢谢
发表于 2022-9-25 12:29:15 | 显示全部楼层
找到1个兼容性好像更好的方法,可以一试:
https://kkocdko.site/post/201804010101
 楼主| 发表于 2022-9-26 16:16:13 | 显示全部楼层
找到1个兼容性好像更好的方法,可以一试:
hfxiang 发表于 2022-9-25 12:29



    妙,可以,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:10 , Processed in 0.016710 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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