0

バッチ スクリプトで非常に奇妙なエラーが発生しました。コードは Android Debugging Bridge を使用していますが、adb ではなく cmd に関連するエラーであると確信しています。したがって、基本的には、スクリプトは root アクセスをチェックするだけです。コードのスニペットを次に示します。

@echo off
adb kill-server
adb start-server
adb shell "su" >check.log 2>&1
adb kill-server
"%windir%\system32\find.exe" "#" check.log && goto pass || goto fail
:fail
echo No root access!
pause
:pass
echo Root access detected!
pause

この出力は次のとおりです。

* daemon not running. starting it now on port XXXX *
* daemon started successfully *
* server not running *
---------- CHECK.LOG
goto was unexpected at this time

そして、ウィンドウは自動的に閉じます。

コマンドを手動で入力してコマンド ウィンドウで実行すると、次のようになります。

J:\tools>adb kill-server

J:\tools>adb start-server
* daemon not running. starting it now on port XXXX *
* daemon started successfully *

J:\tools>adb shell su >check.log 2>&1

J:\tools>"%windir%\system32\find.exe" "#" check.log && echo pass || echo fail

---------- CHECK.LOG
fail

誰でも解決策を考えることができますか?私はこのようにそれをやろうとしました:

@echo off
adb kill-server
adb start-server
adb shell "su" >check.log 2>&1
adb kill-server
SET tr=0
"%windir%\system32\find.exe" "#" check.log >nul && SET tr=1 || SET tr=0
if "%tr%"=="1" goto pass
if "%tr%"=="0" goto fail

私はまだ後藤のエラーが発生します。:/ 困惑しています。以前にそのようなステートメントを使用したことがあります。読んでくれてありがとう!:)

ああ、system32 がパスに存在しない場合があります & これは他のユーザーが使用できるように作成されているため、%windir%\system32\ を使用する必要があります

4

1 に答える 1

0

私はあなたのfind行を実行しましたが、うまくいきました。%errorlevel%私のPCでも問題なく動作する回避策として使用してみてください

find "#" check.log
if %errorlevel%==0 goto pass
if %errorlevel%==1 goto fail

注:変数のようにfind、へのフル パスを指定する必要はありません。system32PATH

お役に立てれば!

于 2012-07-06T11:16:04.267 に答える