0

私のコードスニペットは以下の通りです:

static void LaunchCommandLineApp() {

    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.CreateNoWindow = false;
    startInfo.UseShellExecute = false;
    startInfo.FileName = "adb.exe ";
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;

    startInfo.Arguments =@"logcat > C:\adb\out.txt";
    Process exeProcess = Process.Start(startInfo);          
}

私のコンソールのエラーは次のとおりです。

何かキーを押すと続行します 。. . /system/bin/sh: C:\adb\out.txt を作成できません: 読み取り専用ファイル システム

出力をリダイレクトして電話に保存しようとしているようです。

cmd から次を実行しようとすると、まったく問題はありません。

adb.exe ログキャット > C:\adb\out.txt

バッチ スクリプト内でアクションを実行できることは承知していますが、adb.exe プロセスへのリンクが失われ、複数の adb.exe プロセスが存在する場合、それを直接強制終了することはできません。

任意の支援をいただければ幸いです。

4

1 に答える 1

0

問題は、リダイレクト オペランド ( >) が で処理される場合cmd.exeです。cmd が関与していない場合は使用できません。あなたの選択肢は

(1) おっしゃる通り、バッチファイルを実行すると、adb プロセスへの参照が失われます

(2) cmd を直接実行します。コマンドは次のようになります

cmd.exe /c "adb.exe logcat > c:\adb\out.txt"

これによりバッチ ファイルが削除されますが、adb.process への参照が再び失われます。

(3) リダイレクトを処理します。adb コマンドの出力ハンドルを取得するために使用startInfo.RedirectStandardOutput = true;し、後で呼び出します

string adbOutput = exeProcess.StandardOutput.ReadToEnd();
于 2013-11-02T08:18:02.410 に答える