Título: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 31 Mayo 2013, 03:13 am Tengo una duda... se muy poco de batch y esto se me va de las manos.
El caso es que quería hacer esto: Primero un poco de información, este bat seria para poder deodexizar mi ROM de android, he probado miles de bats que hacen esto pero ninguna funciona. :( Para deodexizar la ROM necesito hacer una cosas y una de ellas es esta: 1.Copiar toda la carpeta framework y app en el pc (esto lo sabría hacer) 2.Deodexizarlas así: Código: java -Xmx1024m -jar baksmali.jar -c core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:com.lge.core.jar -x (Nombre de la apk.apk) Esto cambia solo al final con cada nombre de la apk Citar java -Xmx1024m -jar smali.jar out -o classes.dex Este nunca cambia, después de hacer esto crea un archivo llamado "classes.dex" que tendría que ponerlo en la apk o jar previamente citada. Este proceso es para apk seria los mismo para framework (.jar) pero poniendo .jar en vez de .apk El caso es que tendría que hacer esto unas 200 veces con diferentes nombres pero de forma automática, no uno a 1 porque tardaría demasiado Si queréis os puedo subir algún archivo para que veías como van los tiros ;) Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: Eleкtro en 31 Mayo 2013, 11:01 am Hola,
Antes de nada, usa títulos descriptivos, no cosas como "ayuda" o "¿como se puede hacer esto?". Utiliza un FOR para recorrer los archivos que quieras y efectuar cada acción con cada archivo del recorrido. Código: For %%# in ("C:\*.*") do (Echo %%#) Código: For %%# in ("C:\*.apk") do ( ...Lo mismo si necesitas automatizar algo con las carpetas, utiliza un FOR /D. Saludos Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 31 Mayo 2013, 13:50 pm Gracias voy a mirar un poco para que Sirve "FOR" ;-)
EDIT: Ya me lo he mirado un poco y ya se para que sirve. A ver si me aclaro con el código: Esto sirve para buscar todos los *.apk en C:\ y la variable se para que sirve pero no se explicarlo... Código: For %%# in ("C:\*.apk") do Y esto es para la variable no? Código: %%~f# Lo que no entiendo es porque pones las () Una ultima cosa esto solo lo haría 1 vez con cada archivo no? Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: Eleкtro en 31 Mayo 2013, 15:29 pm El For procesa los archivos uno a uno y efectua las ordenes que le indiques a ese archivo, y luego al siguiente archivo, y así hasta que se complete la serie de archivos encontrados/procesados.
En la variable (en este caso "%%#", puedes darle otro nombre siempre que cumpla el patrón permitido como "%%a") sirve para almacenar el nombre del archivo que se está procesando en ese momento, La variable la puedes expandir para obtener información concreta sobre el archivo, aunque en este caso solo interesa obtener el nombre completo, así que no hay que expandir, el "~f" lo puse como ejemplo visual pero no es necesario aquí. Los paréntesis son los operadores de agrupación, y sirven para agrupar un conjunto de ordenes, "(Echo hola)" sirve igual que "Echo hola", pero en el For uso los paréntesis porque es la manera correcta de programar un For, tanto un For como un If. Si ves códigos así por internet, están muy mal: Código: if "a" == "b" echo si & pause else echo no Al no estar agrupado no se define el limite del grupo y el "Else" no se va a procesar. Hay que hacerlo así: Código: if "a" == "b" (echo si & pause) else (echo no) Y nada, después de esta pequeña clase... te aconsejo que sigas leyendo más, el For es "grande" para alguien que está empezando. Saludos Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 31 Mayo 2013, 17:00 pm Me pareze a mi que voy a usar mucho el "FOR" :P
Ya he empezado a escribir el código a ver que te parece: Copiar archivos del teléfono: Código: @ECHO OFF Deodexizar: Código: cd "C:\Working\App" Esto no se para que sirve pero lo encontre en un bat que hacia lo mismo: Código: rmdir App /S /Q Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: Eleкtro en 31 Mayo 2013, 17:12 pm Me parece bien el código,
para mover archivos y carpetas puedes usar el comando "Move". Esto no se para que sirve pero lo encontre en un bat que hacia lo mismo: Código: rmdir App /S /Q Escribe esto en la consola y sabrás para que sirven: Código: rmdir /? PD: Porfavor, no uses rmdir sin saber para que sirve, es "peligroso" si se usa mal. Saludos. Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 31 Mayo 2013, 17:25 pm Vale te haré caso ;D
Ya se para que sirve cada cosa, no me acordaba que poniendo X /? salia la información, espero no olvidarme. Pues ya tengo el código casi echo, solo me falta saber como copiar el classes.dex dentro de la apk y el jar ;) Gracias por todo, ya es la 2 vez que me ayudas a crear mi bat :silbar: Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 1 Junio 2013, 03:11 am Nadie sabe como puedo hacerlo?
Ya tengo todo el código escrito, solo me falta saber eso... :( PD: Una cosa... Esta parte aun tengo dudas :S Código: For %%# in ("C:\Working\App*.apk") do ( java -Xmx1024m -jar baksmali.jar -c core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:com.lge.core.jar -x "%%~f#" ) La primera parte ya esta clara pero la segunda? eso lo hará cada vez con cada archivo? Osea, cada vez que se haga el la primera parte se hará la segunda parte seguidamente? Al igual que borrar classes.dex, lo borrara cada vez? Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: Eleкtro en 6 Junio 2013, 02:37 am La primera parte ya esta clara pero la segunda? eso lo hará cada vez con cada archivo? Osea, cada vez que se haga el la primera parte se hará la segunda parte seguidamente? Al igual que borrar classes.dex, lo borrara cada vez? What? De verdad no he entendido nada, lo que está entre parentesis se realiza cada vez, con cada archivo, la línea del final ...No. solo me falta saber como copiar el classes.dex dentro de la apk y el jar ;) He leido tu MP, pero ni manejo Java ni manejo Android, esto ya no pertenece a Batch, pregúntalo en la sección correspondiente. Saludos! Título: Re: [BATCH] [ANDROID] A ver si se podria hacer esto... :D Publicado por: erikcatala en 6 Junio 2013, 10:02 am What? De verdad no he entendido nada, lo que está entre parentesis se realiza cada vez, con cada archivo, la línea del final ...No. Es que es un poco dificil de explicar seria asi: Este codigo le llamamos #1 Código: For %%# in ("C:\Working\App*.apk") do ( java -Xmx1024m -jar baksmali.jar -c core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:com.lge.core.jar -x "%%~f#" ) Este #2: Código: java -Xmx1024m -jar smali.jar out -o classes.dex Y copiar el archivo .dex el #3 Y cuando se ejecute el bat tendria que hacer esto: Ejecutar el #1 codigo solo 1 vez, despues el #2 una vez, el #3 otra vez mas. Siempre 1 vez y después otra vez cambiando el nombre del archivo. Esto hace lo que quiero, pero ni lo entiendo y algunas cosas no me sirven... Código: @echo off |