[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] BAT调用VBS的sendkeys特殊字符转义符问题

set “pw=33&^#yb”
sendkeys“%pw%”

我的密码中含%和^,导致密码输入时缺失字符。请问如何解决?

这是批处理代码吗?sendkeys第三方工具?
  1. @echo off
  2. rem pw=33&^#y%b%
  3. set "pw=33^&^^#y%%b%%"
  4. echo %pw%
  5. pause
复制代码


参考:
bat脚本中到底怎么使用转义字符^
bat小白,请多指教!谢谢!

TOP

回复 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

TOP


给一个示例比对,即知其中的趣点了...
  1. @echo off
  2. set "pw1=33&^#y!b"
  3. set "pw2=3edc%^4"
  4. set "pw3=3edc%%^4"
  5. >run.vbs echo Wshell.SendKeys "%pw1%"
  6. >>run.vbs echo Wshell.SendKeys "%pw2%"
  7. >>run.vbs echo Wshell.SendKeys "%pw3%"
复制代码
%字符是纯P代码中的变量引用符号,故其是否在双引号内外都逃不过cmd法眼...

TOP

回复 3# kknd


   
不知道vbs如何转义,给一个笨方法。
  1. @echo off
  2. set "ip=192.168.1.12"
  3. set "name=root"
  4. set "pw=3edc%%^^^^4"
  5. echo %pw%|clip
  6. >%tmp%\\run.vbs echo dim program
  7. >>%tmp%\\run.vbs echo program="D:\Program Files (x86)\Client.exe"
  8. >>%tmp%\\run.vbs echo set Wshell=CreateObject("Wscript.Shell")
  9. >>%tmp%\\run.vbs echo set oexec=Wshell.Exec(program)
  10. >>%tmp%\\run.vbs echo wscript.Sleep 1000
  11. >>%tmp%\\run.vbs echo Wshell.SendKeys"%name%"
  12. >>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}"
  13. >>%tmp%\\run.vbs echo Wshell.SendKeys"^v"
  14. >>%tmp%\\run.vbs echo Wshell.SendKeys"{TAB}""{TAB}""{TAB}""{TAB}"
  15. >>%tmp%\\run.vbs echo Wshell.SendKeys"%ip%"
  16. >>%tmp%\\run.vbs echo Wshell.SendKeys"{ENTER}"
  17. %tmp%\\run.vbs
  18. del /q %tmp%\\run.vbs
复制代码
bat小白,请多指教!谢谢!

TOP


还是加些解释吧》4楼的3个不同pw字符串被写到run.vbs里,pw1被完整保全,pw2被拦截了%字符,pw3被扣除了一个%。结论就是,想要一个%就要给cmd两个%...
原因就是%作为变量引用符,无论在哪,都要被cmd依法处治的。所以,要想run.vbs里保全pw2,就须改用pw3了。

TOP

回复 5# 77七

牛比,可用,谢谢!

TOP

返回列表