关于批处理使用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\> |