problemas con el comando 'grep' de adb

cuando escribo en adb:

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

consigo la salida del error:

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

pero si lo divido a dos operadores:

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

funciona bien (da el nombre de la actividad principal de la aplicación en ejecución).

si la única manera es dividirlo a dos – que meens que primero ingresan a adb shell, y luego ejecutar el Inquire, hay una manera de hacerlo desde c #?

en mi código, sólo hace la primera parte (entrar shell).

aquí está mi código:

  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 }; } 

No hay ningún problema con grep en adb . Hay un problema con su comprensión de cómo funciona shell . Así que vamos a arreglar eso:

En su adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' comando sólo dumpsys window windows ejecuta parte de las dumpsys window windows en Android. Ambos adb shell y grep se están ejecutando en su PC con Windows. Por lo tanto, el error que usted consigue – usted apenas no tiene grep disponible.

Cuando ejecuta adb shell solo, inicia una sesión de shell de anuncios interactiva y todo lo que ingresa se ejecuta en el lado de Android. Esto funciona muy bien para las pruebas manuales. Pero añade una capa de complejidad adicional cuando se utiliza para la automatización. Para usar el modo interactivo de su código necesitaría varios subprocesos (uno para el shell en sí, otro para enviar los comandos).

Pero en su caso usted realmente no necesita toda esa complejidad – simplemente escapar del carácter "pipe" o poner el comando shell completo entre comillas como esto:

 adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'" 
  • Android adb devuelve el error "dispositivo no encontrado"
  • ¿Es posible producir una acción de deslizamiento continuo en la pantalla táctil, con adb, en Android?
  • Empujando busybox en el emulador de android
  • ADB Shell que da el modo incorrecto al ejecutar chmod (bajo su)
  • Enviando la intención de BroadcastReceiver desde adb
  • Personalizar el indicador de adb
  • LG Revolution y Android Development
  • ¿No se pudo analizar la salida de 'versión de adb'?
  • Los dispositivos Adb no pueden encontrar mi teléfono
  • Extraer archivos especiales con ADB
  • La tableta no aparece en el ADB
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.