标题: [文本处理] BAT调用VBS的sendkeys特殊字符转义符问题 [打印本页]
作者: kknd 时间: 2023-8-8 18:00 标题: BAT调用VBS的sendkeys特殊字符转义符问题
set “pw=33&^#yb”
sendkeys“%pw%”
我的密码中含%和^,导致密码输入时缺失字符。请问如何解决?
作者: 77七 时间: 2023-8-9 00:47
这是批处理代码吗?sendkeys第三方工具?- @echo off
- rem pw=33&^#y%b%
- set "pw=33^&^^#y%%b%%"
- echo %pw%
- pause
复制代码
参考:
bat脚本中到底怎么使用转义字符^
作者: kknd 时间: 2023-8-9 09:23
回复 2# 77七
程序的基本功能就是打开一个应用程序,然后自动输入用户名密码,但是用户名或密码中只要出现特殊字符,比如^或%,就会输入不进去。就是想解决这个问题,用了您提供的方法,还是不行,不知还有什么方式?
@echo off
set "ip=192.168.1.12"
set "name=root"
set "pw=3edc%^4"
>%tmp%\\run.vbs echo dim program
>>%tmp%\\run.vbs echo program="D:\Program Files (x86)\Client.exe"
>>%tmp%\\run.vbs echo set Wshell=CreateObject("Wscript.Shell")
>>%tmp%\\run.vbs echo set oexec=Wshell.Exec(program)
>>%tmp%\\run.vbs echo wscript.Sleep 1000
>>%tmp%\\run.vbs echo Wshell.SendKeys"%name%"
>>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}"
>>%tmp%\\run.vbs echo Wshell.SendKeys"%pw%"
>>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}""{TAB}""{TAB}""{TAB}"
>>%tmp%\\run.vbs echo Wshell.SendKeys"%ip%"
>>%tmp%\\run.vbs echo Wshell.SendKeys"{ENTER}"
%tmp%\\run.vbs
del /q %tmp%\\run.vbs
作者: aloha20200628 时间: 2023-8-9 12:10
给一个示例比对,即知其中的趣点了...- @echo off
- set "pw1=33&^#y!b"
- set "pw2=3edc%^4"
- set "pw3=3edc%%^4"
- >run.vbs echo Wshell.SendKeys "%pw1%"
- >>run.vbs echo Wshell.SendKeys "%pw2%"
- >>run.vbs echo Wshell.SendKeys "%pw3%"
复制代码
%字符是纯P代码中的变量引用符号,故其是否在双引号内外都逃不过cmd法眼...
作者: 77七 时间: 2023-8-9 12:41
回复 3# kknd
不知道vbs如何转义,给一个笨方法。
- @echo off
- set "ip=192.168.1.12"
- set "name=root"
- set "pw=3edc%%^^^^4"
- echo %pw%|clip
- >%tmp%\\run.vbs echo dim program
- >>%tmp%\\run.vbs echo program="D:\Program Files (x86)\Client.exe"
- >>%tmp%\\run.vbs echo set Wshell=CreateObject("Wscript.Shell")
- >>%tmp%\\run.vbs echo set oexec=Wshell.Exec(program)
- >>%tmp%\\run.vbs echo wscript.Sleep 1000
- >>%tmp%\\run.vbs echo Wshell.SendKeys"%name%"
- >>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}"
- >>%tmp%\\run.vbs echo Wshell.SendKeys"^v"
- >>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}""{TAB}""{TAB}""{TAB}"
- >>%tmp%\\run.vbs echo Wshell.SendKeys"%ip%"
- >>%tmp%\\run.vbs echo Wshell.SendKeys"{ENTER}"
- %tmp%\\run.vbs
- del /q %tmp%\\run.vbs
复制代码
作者: aloha20200628 时间: 2023-8-9 13:56
还是加些解释吧》4楼的3个不同pw字符串被写到run.vbs里,pw1被完整保全,pw2被拦截了%字符,pw3被扣除了一个%。结论就是,想要一个%就要给cmd两个%...
原因就是%作为变量引用符,无论在哪,都要被cmd依法处治的。所以,要想run.vbs里保全pw2,就须改用pw3了。
作者: kknd 时间: 2023-8-9 16:34
回复 5# 77七
牛比,可用,谢谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |