android batch-file cmd adb

android - scripting por lotes: si existe./sdcard/file.any usando adb



batch-file cmd (2)

Ejecutando en una ventana de símbolo del sistema if /? o help if genera las páginas de ayuda para el comando interno if .

El procesador de comandos no es muy tolerante con la sintaxis. Una rama else solo es posible con paréntesis. La rama verdadera debe tener ( que debe estar en la misma línea que el comando if separada por un espacio de la segunda cadena de comparación.

El cierre ) para una rama verdadera puede estar en la misma línea que la apertura ( o en una línea diferente.

La palabra clave else debe estar en la misma línea que el cierre ) de la rama verdadera después de un espacio.

Si se usan corchetes redondos también para la rama else, apertura ( debe estar en la misma línea que else separada con un espacio de la palabra clave.

La palabra clave do es completamente incorrecta aquí, ya que es una palabra clave para el comando FOR .

Algunas de las variantes de trabajo.

  1. Todo en una línea con la menor cantidad de espacios posible (difícil de leer):

    if exist "directory/file" (echo exists) else (adb push "file" "directory")

  2. Todo en una línea con más espacios para facilitar la lectura:

    if exist "directory/file" ( echo exists ) else ( adb push "file" "directory" )

  3. Condición en la primera línea, rama verdadera en la segunda línea, otra rama sin paréntesis en la tercera línea:

    if exist "directory/file" ( echo exists ) else adb push "file" "directory"

  4. Cada parte de la condición completa en líneas separadas:

    if exist "directory/file" ( echo exists ) else ( adb push "file" "directory" )

Hay más variantes posibles, pero todas son horribles de leer.

Es mejor usar la segunda o cuarta variante, ya que esas 2 son las mejores para leer.

Recomiendo usar siempre la cuarta variante si también se usa una rama else.

./ al comienzo del nombre del archivo / nombre del directorio podría omitirse.

Y el separador de directorio en Windows es el carácter de barra diagonal inversa.

NOTA: No sé si if exist ./sdcard/file.any o ./sdcard/file.any funciona en absoluto. La pregunta no contiene ninguna información sobre

  • Versión de Android,
  • el dispositivo Android en sí,
  • cómo se configura el dispositivo con respecto al acceso a archivos y directorios en sus medios de almacenamiento, como almacenamiento (s) extraíble (s) que permite acceder a los archivos y directorios desde el entorno de línea de comandos de Windows o simplemente a través del Protocolo de transferencia de medios que no es compatible con la línea de comandos de Windows ambiente,
  • en qué entorno se está ejecutando este archivo por lotes, es decir, cuál es el directorio actual, cuáles son los valores de las variables de entorno PATH y PATHEXT , etc.

Entonces, la respuesta cubre solo el error de sintaxis IF , no cómo verificar la existencia de un archivo en cualquier dispositivo Android con cualquier versión de Android conectada con los controladores de dispositivo y los protocolos de acceso al almacenamiento de datos que se utilizan para acceder al dispositivo.

Me gustaría verificar si existe un archivo en mi dispositivo Android y, si no, empujarlo. ¿Cuál es la sintaxis para hacerlo usando adb en lote? Algo como:

if exist ./sdcard/file.any do echo "exists" else adb push file.any ./sdcard/


Sé que esto es un poco viejo, pero ¿qué tal algo alrededor de las líneas de:

set cmd="adb shell ls | find /c "theFile" " FOR /F %%K IN ('' !cmd! '') DO SET TEST=%%K if !TEST! GTR 0 ( echo the file exists ) else ( echo the file does not exist )

Estoy usando esto para un escenario muy similar que funciona para mí. Pensé en compartir.