我的代码段如下:
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进程,我将无法直接将其终止。
任何帮助将不胜感激。
答案 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();