2017-08-13 14 views
0

私はAndroidManifest.xmlを経由してアプリケーションで使用されているアクセス権を引き出し、.txtファイルに出力するバッチスクリプトを作成しようとしています手作業で行う必要はありません。私の仕事の一部は、開発者の背後にあり、実際に使用されて無意味なコードではないことを確認するために、アプリケーションで使用されるすべての権限をカタログ化しています。XMLファイルから行を引き出すためのバッチスクリプトの作成に問題がある

例えば、XML内そこのように見える線です:

<uses-permission android:name="android.permission.VIBRATE"/> 

が、私は、出力ファイルに追加しようとしています:.TXTに

android.permission.VIBRATE 

ファイル。

現在、私は、出力の行の正しい番号を取得していますが、代わりに私が取得しています許可の:

!line! 

私が扱っ似たものに、オンラインの例とチュートリアルから書いたコードをXMLファイルで以下の通りです:

ECHO off 
REM new line added to fix output below thanks to Compo 
SETLOCAL enabledelayedexpansion 

:start 

ECHO Note: Find your list of permissions used in the permissions output file 
ECHO Please input the file path to the AndroidManifest you'd like scrapped for permissions 

SET /p manifestpath= 
ECHO Verifying inputted path: 
ECHO %manifestpath% 

CD "%manifestpath%" 

(FOR /f "usebackqtokens=1-7delims=<=>/ " %%a IN (AndroidManifest.xml) DO (
IF /i "%%~a%%~b"=="uses-permissionandroid:name" ECHO "%%~c" 
)) > permissionsoutput.txt 

START permissionsoutput.txt 

ECHO to run again enter 'r' 
ECHO to exit enter 'e' 

SET /p nextaction= 
if %nextaction%==r goto :start 
if %nextaction%==e :eof 

UPDATE:!その実際に、他の何かを返送ライン、すごいです!今。 android.permission.WRITE_EXTERNAL_STORAGE

がUPDATE:完全のようなものに名前=「android.permission.WRITE_EXTERNAL_STORAGE」/> : アンドロイド:しかし、私はからの権限のために、現在の出力からそれを得るために何をすべきかが必要ですワーキング!上記のコードは、別のプロジェクトの参照として必要とする人にとっては、完全に機能するはずです。

答えて

1

@echo offした後、(改行

​​

それは掲示ラインからandroid.permission.WRITE_EXTERNAL_STORAGEを取得するためにvar


現在値となる!var!を引き起こしdelayedexpansionモードであるとしてくださいインサート実際の行を元の質問に編集する - XMLとのコメント戦)

@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "filename1=%sourcedir%\q45656376.txt" 
FOR /f "usebackqtokens=1-7delims=<=>/ " %%a IN ("%filename1%") DO (
IF /i "%%~a%%~b"=="uses-permissionandroid:name" ECHO "%%~c" 
) 

GOTO :EOF 

私のシステムでは、あなたの行を含むいくつかのランダムなXMLを含む便宜のためにfilename1を構成します。

区切り文字として<=>/に関するファイルを読み、 3番目を選択して引用符を削除します。

このコードは、ファイルから必要なデータを抽出する方法をデモすることを目的としています。最初の4行は単純にソースファイル名を設定します>テスト用にこの構造を使用するので、問題があればコードを簡単に修正できます。関連するファイルセットにすべてのデータを保持します(バッチは、この場合にq45656376.batあろうと任意の関連データファイルはq45656376.txt、等である)

goto :eof端に余分なコードである - 私は、任意のバッチにサブルーチンを追加することに伴う問題を軽減するために使用する習慣。

残っているのはforです。あなたのルーチンに既に入っているfor/fを代用する必要があります。 "AndroidManifest.xml"を対象としたファイル名を変更し、%%~cの引用符を削除する必要があります(望むならば)。引用符を使って余分なスペースがないことを視覚的に確認しました。あなたのfor声明is parenthesisedファイル名. This is used to redirect the>(...のために)同じようにto a file instead of to the console. You'd need to parenthesise the for`文のed output from theエコー

注出力ファイルを生成します。

+0

驚くばかりですが、実際には他の!今。 アンドロイド:しかし、私はからの権限のために、現在の出力からそれを得るために何をすべきかが必要なのか名前=「android.permission.WRITE_EXTERNAL_STORAGE」/> のようなものに:私は android.permission.WRITE_EXTERNAL_STORAGE – JustKay

+0

私が上にあるものにそのコードを挿入する必要がある場所を混乱させるか、それとも別のものになると思いますか? – JustKay

関連する問題