查看: 2475|回复: 15
收起左侧

[已解决] 【已解决】带%1参数的批处理提权怎么弄?(路径一有空格符就出问题了)

[复制链接]
nmyh
发表于 2021-11-22 19:32:44 | 显示全部楼层 |阅读模式
本帖最后由 nmyh 于 2021-11-24 21:27 编辑

附件下载:

解压后,把“一 二”文件夹拖拽到“3.bat”批处理上。如果批处理界面显示了下面两行就说明成功了:
操作成功完成。
操作成功完成。


如果路径没有空格,那么“3.bat”批处理就没问题,但是一旦有空格了就无法成功操作了。

未成功的“3.bat”批处理代码如下:
  1. [url=home.php?mod=space&uid=331734]@echo[/url] off

  2. if "%~1"=="" exit

  3. net session
  4. cls
  5. if %errorlevel% NEQ 0 goto Elevate
  6. goto admin

  7. :Elevate
  8. start "" mshta vbscript:createobject("shell.application").shellexecute("%~0","%~1",,"runas",1)(window.close)&exit


  9. :admin

  10. for %%i in ("%~1\*.txt") do (
  11.   reg.exe add "HKLM\SOFTWARE\01\%%~ni"
  12. )

  13. echo 操作完成,按任意键退出....
  14. pause>nul
  15. exit
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
落华无痕
发表于 2021-11-22 22:18:53 | 显示全部楼层
既然只是拖放文件夹,那
for %%i in ("%~1\*.txt")
改成
for %%i in ("%*\*.txt")
不就行了?

评分

参与人数 1人气 +2 收起 理由
nmyh + 2 感谢解答: )

查看全部评分

nmyh
 楼主| 发表于 2021-11-23 16:15:19 | 显示全部楼层
本帖最后由 nmyh 于 2021-11-23 16:45 编辑

遇到新问题了,加不加引号都存在一点问题:

@落华无痕 试试看这个,不知道是什么问题了。


把文件夹拖入“3a.bat”,没问题:for %%i in (%*) do (
把文件夹拖入“3a2.bat”,不显示内容:for %%i in ("%*") do (

把文件夹拖入“3b.bat”(提权的),不显示内容:for %%i in (%*) do (
把文件夹拖入“3b2.bat”(提权的),没问题:for %%i in ("%*") do (


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
落华无痕
发表于 2021-11-23 17:06:24 | 显示全部楼层
本帖最后由 落华无痕 于 2021-11-23 17:22 编辑
nmyh 发表于 2021-11-23 16:15
遇到新问题了,加不加引号都存在一点问题:

@落华无痕 试试看这个,不知道是什么问题了。

3b.bat能显示内容,3b2.bat不显示吧?你好像搞错了。
我说错了,我这边默认关掉UAC,所以3b.bat显示,3b2.bat不显示。

而开启UAC状态下,3b.bat不显示,3b2.bat显示。

原因是关UAC时,路径是默认有引号的,而开UAC时,通过 mshta 传递参数%~1会去掉引号。

评分

参与人数 1人气 +1 收起 理由
nmyh + 1 赞一个!

查看全部评分

nmyh
 楼主| 发表于 2021-11-23 17:28:03 | 显示全部楼层
落华无痕 发表于 2021-11-23 17:06
3b.bat能显示内容,3b2.bat不显示吧?你好像搞错了。
我说错了,我这边默认关掉UAC,所以3b.bat显示,3b ...

嗯,是的刚刚我这边虚拟机试了下administrator帐号就是相反的。
nmyh
 楼主| 发表于 2021-11-23 17:40:39 | 显示全部楼层
本帖最后由 nmyh 于 2021-11-23 17:42 编辑
落华无痕 发表于 2021-11-23 17:06
3b.bat能显示内容,3b2.bat不显示吧?你好像搞错了。
我说错了,我这边默认关掉UAC,所以3b.bat显示,3b ...

可能是像1楼那样提权的脚本命令的问题,我用一个exe程序提权就可以直接写“%~1”:
  1. REM 是文件夹目录
  2. if exist "%~1" (
  3.   echo 目录:%~1
  4.   for %%j in ("%~1\*.txt") do (
  5.     echo 目录下的文件:%%~j
  6.     rem reg.exe add "HKLM\SOFTWARE\01\%%~ni" /f
  7.   )
  8. ) else if exist "%~1" (
  9.   echo 文件:%~1
  10. )
复制代码


但是用纯批处理提权代码就不行了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
落华无痕
发表于 2021-11-23 17:53:43 | 显示全部楼层
你可以把%*赋值给folderpath变量,后续"%*"改成"%folderpath:"=%"

评分

参与人数 1人气 +1 收起 理由
nmyh + 1 感谢解答: )

查看全部评分

nmyh
 楼主| 发表于 2021-11-23 18:02:20 | 显示全部楼层
落华无痕 发表于 2021-11-23 17:53
你可以把%*赋值给folderpath变量,后续"%*"改成"%folderpath:"=%"

谢谢,好像可以了。
nmyh
 楼主| 发表于 2021-11-23 19:37:08 | 显示全部楼层
落华无痕 发表于 2021-11-23 17:53
你可以把%*赋值给folderpath变量,后续"%*"改成"%folderpath:"=%"

又遇到一个新的问题,如何用for遍历整个子目录?


3.bat代码如下:
  1. @echo off

  2. if "%~1"=="" exit


  3. net session
  4. cls
  5. if %errorlevel% NEQ 0 goto Elevate
  6. goto admin

  7. :Elevate
  8. start "" mshta vbscript:createobject("shell.application").shellexecute("%~0","%~1",,"runas",1)(window.close)&exit


  9. :admin

  10. set "folderpath=%*"

  11. for %%a in ("%folderpath:"=%") do (
  12.   if exist "%%~a" (
  13.     echo 目录:%%~a
  14.     REM 下边的for遍历目录如何写?
  15.     for /d /r "%%~a" %%b in ("*") do (
  16.       echo 子目录:%%~b
  17.     )
  18.   ) else if exist "%%~a" (
  19.     echo 文件:%%~a
  20.   )
  21.   goto End
  22. )

  23. :End
  24. echo 操作完成,按任意键退出....
  25. pause>nul
  26. exit
复制代码



我写成了下面一行发现没有“子目录:”的提示:
for /d /r "%%~a\" %%b in ("*") do (

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
落华无痕
发表于 2021-11-23 22:00:17 | 显示全部楼层
本帖最后由 落华无痕 于 2021-11-24 10:10 编辑

不知道你是不是想要这种效果:
  1. cd /d %*

  2. echo 目录:%*

  3. for %%a in (*) do (
  4.       echo 文件:%%~a
  5.     )

  6. for /r /d %%a in (*) do (
  7.     echo.&echo 子目录:%%~a
  8.     for %%b in ("%%~a\*") do (
  9.       echo 文件:%%~b
  10.     )
  11. )
复制代码




for循环括号里的路径有很多限制,还不如直接cd进空格目录里再for循环遍历。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 1人气 +3 收起 理由
nmyh + 3 再次感谢

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 09:55 , Processed in 0.118629 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

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