0

我的代码片段如下:

静态无效 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 logcat > 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) 你处理重定向。用于startInfo.RedirectStandardOutput = true;获取 adb 命令的输出句柄,稍后调用

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