adb 的“grep”命令出现问题

2023-11-22

当我在 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,
                    WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal,
                    FileName = "cmd.exe",
                    Arguments = "/c" + " dumpsys window windows | grep -E   'mCurrentFocus|mFocusedApp'",
                    UseShellExecute = false
                };
 }

没有有问题grep in adb。你的理解有问题shell作品。那么让我们解决这个问题:

In your adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'仅命令dumpsys window windows部分在Android上运行。两个都adb shell and grep命令正在 Windows PC 上运行。因此你得到的错误 - 你只是没有grep可用的。

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

但在您的情况下,您实际上并不需要那么复杂 - 只需转义“管道”字符或将整个 shell 命令放在引号中,如下所示:

adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

adb 的“grep”命令出现问题 的相关文章

随机推荐