尝试将长字符串传递给android模拟器。所以我必须在cmd
解析然后以sh
方式解析我的输入,因为那就是adb
(我用来最终获取输入文本的工具) android模拟器)使用。
简单地说就是:CMD - > adb.exe - > sh - >远程登录
主要问题是adb.exe-> sh步骤。我必须逃避(之前添加\
)几个字符。我现在回忆的是;
和(
以及)
。
所以在上面的流程中,对于第一个(CMD)步骤,我有输入:abc 123 ();
但是对于第二步(adb.exe),我必须传入adb.exe ... "abc" 62 "123" 62 "\(\)\;"
在空间中打破我认为我可以用FIND
(或者只是使用默认参数分离,因为我用来简化我到目前为止的样本),但替换地图(;
- > \;
),有没有简单的方法在.bat文件中执行此操作?
@echo off
rem if there are no arguments, exit
IF [%1]==[] exit /B
:loop_args
rem TODO: escape ';' and '(' and ')'
rem send this argument...
adb shell input text %1
rem ...plus a space
if [%2]==[] exit /B
adb shell input keyevent 62
rem shift to the next argument and continue
SHIFT
goto loop_args
答案 0 :(得分:1)
这适用于多个角色。
set "var=%~1"
set "var=%var:;=\;%"
set "var=%var:)=\)%"
set "var=%var:(=\(%"
echo "%var%"
答案 1 :(得分:0)
如果应用程序以通常的方式处理文本,那么命令行文本周围的引号将如下所示:
batch.bat "ab de fg" "<123 && 456>" "(10 to one)"
使用此批处理文件
@echo off
:loop
adb shell input text "%~1"
shift
if not "%~1"=="" goto :loop