android – 来自adb的’grep’命令的问题

前端之家收集整理的这篇文章主要介绍了android – 来自adb的’grep’命令的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我用adb写的时候:
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

我得到错误输出

'grep' is not recognized as an internal or external command,operable program or batch file.

但如果我将它拆分为两个操作符:

adb shell 
dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

它工作正常(它提供正在运行的应用程序的主要活动名称).

如果唯一的方法是将它拆分为两个 – 首先进入adb shell,然后运行Inquire,有一种方法可以从c#中执行此操作吗?

在我的代码中,它只执行第一部分(进入shell).

这是我的代码

public static void startNewProccess(object startInfo)
 {
        p = new Process();
        p.StartInfo = (System.Diagnostics.ProcessStartInfo)startInfo;
        p.Start();
        p.WaitForExit();
 }

 public static void getMainActivity()
 {
 var startInfo1 = new System.Diagnostics.ProcessStartInfo
                { 
                    WorkingDirectory = @ADB_FOLDER,WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,FileName = "cmd.exe",Arguments = "/c" + " adb shell",//adb shell am start -n com.package.name/com.package.name.ActivityName
                    UseShellExecute = false
                };
                startNewProccess(startInfo1);

                var startInfo2 = new System.Diagnostics.ProcessStartInfo
                {
                    WorkingDirectory = @ADB_FOLDER,Arguments = "/c" + " dumpsys window windows | grep -E   'mCurrentFocus|mFocusedApp'",UseShellExecute = false
                };
 }

解决方法

adb中的grep没有问题.您对shell的工作原理有一个问题.所以让我们解决这个问题:

在你的adb shell dumpsys窗口窗口中grep -E’mCurrentFocus | mFocusedApp’命令只有dumpsys窗口窗口部分在Android上运行. adb shell和grep命令都在Windows PC上运行.因此你得到的错误 – 你只是没有grep可用.

当您单独运行adb shell时 – 启动交互式adb shell会话,您输入的所有内容都将在Android端执行.这非常适合手动测试.但在用于自动化时增加了额外的复杂性层.要使用代码中的交互模式,您需要多个线程(一个用于shell本身,另一个用于发送命令).

但是在你的情况下,你并不需要所有这些复杂性 – 只需转义“管道”字符或将整个shell命令放在引号中,如下所示:

adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"
原文链接:https://www.f2er.com/android/318463.html

猜你在找的Android相关文章