标题: [其他] 批处理使用adb输入特殊字符(英文双引号)的一些问题 [打印本页]
作者: dos-a 时间: 2023-3-8 23:03 标题: 批处理使用adb输入特殊字符(英文双引号)的一些问题
关于批处理使用adb输入特殊字符英文双引号的一些问题:
之前写了个简单的win通过for 遍历adb devices序列号来使用adb -s 指定序列号 shell input text 输入内容 的简单脚本,可是遇到输入特殊字符因为双引号本身的特性而倒是if部分判断时直接退出。故先将单台输入部分代码拿了出来,下列代码使用了字符截取与合并的方式处理了关于adb输入英文字符的转译问题,但win这边我使用set将放转译符:^ 截取合并后并未达成能如期使用:if ”%处理后变量%“==”指定值“ 不退出而是执行接下来的操作,希望能帮忙解决一下这个问题
代码如下:- :1
- set /p "c=请输入: "
- set "v=%c:'=\'%"
- set "g=%v:"=\\\"%"
- set "f=%g:&=\&%"
- set "k=%f:"=^"%"
-
- if "%k%"=="'=\'" ( set "k="&goto 1)
- if "%k%"=="e" call :g
- adb shell "input text %k%"
- echo 你输入了%c%
- echo adb 输入了%k%
- pause
- goto 1
- :g
- timeout 2 >nul
- echo 2秒后退出!!!
复制代码
输入1个双引号的运行结果:
C:\Users\Desktop\>set /p "c=请输入: "
请输入: "
C:\Users\Desktop\>set "v=""
C:\Users\Desktop\>set "g=\\\""
C:\Users\Desktop\>set "f=\\\""
C:\Users\Desktop\>set "k=\\\^""
此时不应有 =\'" ( set "k="&goto 1)。
C:\Users\Desktop\>if "\\\^""=="'=\'" ( set "k="&goto 1)
C:\Users\Desktop\>
作者: 77七 时间: 2023-3-8 23:52
本帖最后由 77七 于 2023-3-9 00:01 编辑
一共是有两个问题?
1. 此时不应有 =\'" ( set "k="&goto 1)。报错
2.输入e 后 不退出
- :1
- set /p "c=请输入: "
- set "v=%c:'=\'%"
- set "g=%v:"=\\\"%"
- set "f=%g:&=\&%"
- set "k=%f:"=^"%"
-
- set _"%k%"=1
- if defined _"'=\'" (
- set "k="
- set "_"'=\'"="
- goto 1
- )
- if defined _"e" call :g
- rem adb shell "input text %k%"
- echo 你输入了%c%
- echo adb 输入了%k%
- pause
- goto 1
- :g
- echo 2秒后退出!!!
- timeout 2 >nul
- exit
复制代码
试试这样能解决吗?
作者: dos-a 时间: 2023-3-9 09:11
回复 2# 77七
我偷了个懒解决了
代码如下:
@echo off
:1
echo 输入 【enter】刷新 【e】退出
set c=
set /p "c=请输入: "
set "v=%c:'=\'%"
set "g=%v:"=\\\。%"
set "f=%g:&=\&%"
@REM echo %v%
@REM echo %g%
@REM echo %f%
@REM set "k=%f:"=^"%"
if "%f%"=="'=\'" ( set "k="&goto 1)
if "%f%"=="e" goto :g
set "k=%f:。="%"
echo %k%
adb shell "input text %k%"
echo 你输入了%c%
echo adb 输入了%k%
pause
goto 1
:g
echo 2秒后退出!!!
timeout 2 >nul
exit
但是我有点看不懂你的11行的set
作者: dos-a 时间: 2023-3-9 09:13
现回车,输入特殊字符,输入e退出基本上是没问题了
作者: dos-a 时间: 2023-3-9 09:20
作者: 77七 时间: 2023-3-9 09:47
回复 3# dos-a
你不是要返回重复输入吗?定义为空,重置一下
也可能是我想错了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |