1

Androidエミュレーターに長い文字列を渡そうとしています。だから私は自分の入力を解析する方法でエンコードする必要がありcmdます.shadb

単純に: CMD -> adb.exe -> sh -> telnet

主な問題は adb.exe->sh ステップです。\いくつかの文字をエスケープ (前に追加) する必要があります。今思い出したのは;().

したがって、上記のフローでは、最初の(CMD)ステップでは、入力として次のようになります。abc 123 ();

しかし、2番目のステップ(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

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 に答える