12
返回列表 发新帖
楼主: nmyh
收起左侧

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

[复制链接]
nmyh
 楼主| 发表于 2021-11-24 12:46:00 | 显示全部楼层
本帖最后由 nmyh 于 2021-11-24 12:47 编辑
落华无痕 发表于 2021-11-23 22:00
不知道你是不是想要这种效果:


还有个问题:能不能只让批处理处理%1内容,不处理%2、%3这些后面的内容?

下面这个附件有一个问题,就是无UAC(administrator)拖入两个文件时,会同时显示两个文件(有UAC时就只显示一个):

就是即使拖入多个文件,也只显示第一个文件。

20211124a.bat代码就不贴出来了,显示有问题

本帖子中包含更多资源

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

x
落华无痕
发表于 2021-11-24 18:43:47 来自手机 | 显示全部楼层
本帖最后由 落华无痕 于 2021-11-24 21:45 编辑
nmyh 发表于 2021-11-24 12:46
还有个问题:能不能只让批处理处理%1内容,不处理%2、%3这些后面的内容?

下面这个附件有一个问题,就 ...

这问题越来越多了。另外你之前的那些问题,在切换进目录后再执行就不存在了,for循环里直接用变量1才有问题,所以你无需额外弄一个目录路径变量。
变量1路径问题没法解决,你提权时默认删掉引号了,无法区分哪里是路径哪里是变量2。

cmd.exe启动批处理传参时很麻烦。举几个例子:
1.cmd.exe /c test.bat abc,能正确传递参数abc执行。
2.cmd.exe /c test.bat "abc",能正确传递参数"abc"执行。
3.cmd.exe /c "test.bat" abc,能正确传递参数abc执行。
4.cmd.exe /c "test.bat" "abc",提示:'test.bat" "abc' 不是内部或外部命令,也不是可运行的程序或批处理文件。

根据上面例子得出结论,批处理和参数不能同时带引号,也就是不能同时存在空格路径。除非用短文件路径扩展批处理路径(前提系统开启了短文件路径),如%~s0。

  1. start "" mshta vbscript:createobject("shell.application").shellexecute("%~0","%~1",,"runas",1)
复制代码
可以改成
  1. start "" mshta vbscript:createobject("shell.application").shellexecute("cmd.exe","/c %~0 "%~1"",,"runas",1)(window.close)&exit
复制代码


批处理不能位于空格路径,批处理用%~1去掉引号获取变量1。


评分

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

查看全部评分

nmyh
 楼主| 发表于 2021-11-24 21:22:17 | 显示全部楼层
落华无痕 发表于 2021-11-24 18:43
这问题越来越多了。另外你之前的那些问题,在切换进目录后再执行就不存在了,for循环里直接用变量1才有问 ...

我之后有个写入临时文件的小处理,这个是测试想要的效果:


最终的成品在这里“【新版批处理】禁止程序文件联网(一个文件或一个文件夹目录)”:
https://bbs.kafan.cn/thread-2221321-1-1.html


之前我是用一个提权命令行程序弄的,现在经过你的指点已经不需要额外的提权程序了,感谢!

本帖子中包含更多资源

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

x
落华无痕
发表于 2021-11-24 22:24:41 | 显示全部楼层
本帖最后由 落华无痕 于 2021-11-24 23:02 编辑
nmyh 发表于 2021-11-24 21:22
我之后有个写入临时文件的小处理,这个是测试想要的效果:

呃,原来你是用来干那个啊。
遍历目录下的exe,不需要先遍历目录再遍历文件,直接cd进遍历目录,for /r %%i in (*.exe)就行了。

拖放n个文件到批处理里执行也是可以的,超过9个参数就shift位移下,只不过管理员提权并传参很难。

我个人想法是,不要管理员提权后传参,而是在普通权限下把要执行的命令echo到另一个批处理里,把全部参数都写成命令后,再提权运行那个批处理一次解决。
或者把参数写入临时文件,提权后再读取。

评分

参与人数 1人气 +2 收起 理由
nmyh + 2 谢谢

查看全部评分

nmyh
 楼主| 发表于 2021-11-25 13:33:38 | 显示全部楼层
落华无痕 发表于 2021-11-24 22:24
呃,原来你是用来干那个啊。
遍历目录下的exe,不需要先遍历目录再遍历文件,直接cd进遍历目录,for /r  ...

遍历的代码已经更新到那个主题帖子里了。


后面你的个人想法,要用到echo保存文件,但是其保存的是ansi编码,因此如果有韩文字符就不支持了。我想让韩文名的程序创建规则也有效。还是谢谢你的回复。

落华无痕
发表于 2021-11-25 14:59:10 | 显示全部楼层
nmyh 发表于 2021-11-25 13:33
遍历的代码已经更新到那个主题帖子里了。

国际化就有点麻烦了。虽然通过chcp 65001切换到UTF8编码,批处理也用UTF8编码保存可以在win10上正常运行,但是win7、xp之类chcp的兼容性不行。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-25 18:21 , Processed in 0.093621 second(s), 15 queries .

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

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