使用System.Diagnostics.Process进行DifficultY进程参数

时间:2013-11-01 21:06:00

标签: android batch-file

我的代码段如下:

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 logcat> C:\ ADB \ out.txt

我知道我可以在批处理脚本中执行操作,但是我丢失了一个指向adb.exe进程的链接,如果存在多个adb.exe进程,我将无法直接将其终止。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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();