1

试图将一个长字符串传递给 android 模拟器。因此,我必须将我的输入编码为cmd解析然后以某种方式sh解析,因为这就是adb(我用来最终将输入文本获取到 android 模拟器的工具)使用的东西。

简单来说就是:CMD -> adb.exe -> sh -> telnet

主要问题是 adb.exe->sh 步骤。我必须转义(\之前添加)几个字符。我现在回忆的是;and()

所以在上面的流程中,对于第一个(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
4

2 回答 2

1

这适用于几个字符。

set "var=%~1"
set "var=%var:;=\;%"
set "var=%var:)=\)%"
set "var=%var:(=\(%"

echo "%var%"
于 2013-08-28T07:05:54.750 回答
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
于 2013-08-28T01:30:46.570 回答