Board logo

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

作者: fly9902    时间: 2022-9-13 09:29     标题: 在含有特殊字符的文件夹执行含有空格文件名的批处理,无法以管理员权限运行

本帖最后由 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


都无法运行,求教
作者: Batcher    时间: 2022-9-13 10:58

回复 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
复制代码

作者: fly9902    时间: 2022-9-13 11:24

回复  fly9902


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


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



   
批处理是ANSI编码的,操作系统是win11 22621.382,换你这个还是不行,一跳而过,都等不到pause让你暂停
作者: yakeyun    时间: 2022-9-13 15:42

本帖最后由 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
复制代码

作者: fly9902    时间: 2022-9-13 17:36

回复  fly9902

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



   

放到带有@名称的文件夹运行就会一跳而过
作者: flashercs    时间: 2022-9-14 06:29

  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
复制代码

作者: fly9902    时间: 2022-9-24 22:07

flashercs 发表于 2022-9-14 06:29



   
成功,谢谢
作者: hfxiang    时间: 2022-9-25 12:29

找到1个兼容性好像更好的方法,可以一试:
https://kkocdko.site/post/201804010101
作者: fly9902    时间: 2022-9-26 16:16

找到1个兼容性好像更好的方法,可以一试:
hfxiang 发表于 2022-9-25 12:29



    妙,可以,感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2