Encontrar palabra en .txt y crear variable

Iniciado por erikcatala, 4 Agosto 2016, 22:50 PM

0 Miembros y 1 Visitante están viendo este tema.

erikcatala

Hola, estoy tratando de buscar una palabra en concreto en un archivo .txt con batch, exactamente ro.product.device=libra. La palabra puede cambiar pero ro.product.device= siempre es igual. Me gustaría que la palabra que cambia poder guardarla en una variable.

He probado con buscar la palabra y guardar la linea en un .txt y luego reemplazar la parte ro.product.device= por nada pero siempre me queda =libra y no puedo borrar el =.

A ver si alguien me puede ayudar porque no consigo hacer lo que quiero

Eleкtro

Cita de: erikcatala en  4 Agosto 2016, 22:50 PMHe probado con buscar la palabra y guardar la linea en un .txt y luego reemplazar la parte ro.product.device= por nada pero siempre me queda =libra y no puedo borrar el =.

A ver si alguien me puede ayudar porque no consigo hacer lo que quiero

Hola.

Si ya tienes una solución casi completa, entonces es mejor que muestres tu código para poder corregírtelo y que puedas eliminar el caracter "=".

Saludos!








erikcatala

No es la mejor opción pero es la que se me ocurrió con lo que se de batch. Se podría hacer mucho mejor, pero esta es la única que se me ha ocurrido y podía hacer. El script son 2 scripts que he encontrado por internet y que he adaptado. Uno para encontrar una linea de un texto y hacer una variable y el otro para reemplazar una palabra por otra en un texto.

setlocal DisableDelayedExpansion

FINDSTR ro.product.device= 3-IMG-Folder\system\build.prop > tmp2.txt
SET /p vartmp =<tmp2.txt

set INTEXTFILE=tmp2.txt

set OUTTEXTFILE=temp.txt
set SEARCHTEXT=ro.product.device
set VER=
set OUTPUTLINE=

for /f "tokens=1,* delims=¶" %%A in ( '"type %INTEXTFILE%"') do (
    SET string=%%A
    setLocal EnableDelayedExpansion
    SET modified=!string:%SEARCHTEXT%=%VER%!
    echo.!modified! >> %OUTTEXTFILE%
    endlocal
)

del %INTEXTFILE%
rename %OUTTEXTFILE% %INTEXTFILE%

Eleкtro

#3
Cita de: erikcatala en  4 Agosto 2016, 22:50 PMMe gustaría que la palabra que cambia poder guardarla en una variable.

Puedes hacerlo de la siguiente manera:

Código (dos) [Seleccionar]
@Echo Off

Set "srcFile=.\Textfile.txt"
Set "pattern=ro.product.device="
Set "value="

For /F "Tokens=2* Delims==" %%# In (
   'Type "%srcFile%" ^| FindStr "%pattern%"'
) Do (
   Set "value=%%#"
)

Echo Valor: "%value%"

Pause&Exit /B 0


Saludos








erikcatala

#4
Muchas gracias, me ha funcionado  ;-)

"Tokens=2* Delims=="

Esta parte supongo que elimina = pero no acabo de entenderlo muy bien, podrías explicármelo por favor?

EDIT: Este post me ha ayudado a entenderlo un poco mejor

http://foro.elhacker.net/scripting/batchalmacenar_el_contenido_de_un_archivo_txt_en_una_variable-t201944.0.html

Eleкtro

#5
Cita de: erikcatala en  5 Agosto 2016, 17:41 PM"Tokens=2* Delims=="

Esta parte supongo que elimina = pero no acabo de entenderlo muy bien, podrías explicármelo por favor?

No elimina nada, sino que lo separa en un token.

El parámetro "Tokens" determina la posición y la cantidad de tokens (partes) que se almacenan en las variables de For (%%a...%%z), y el parámetro "Delims" indica el caracter o caracteres delimitadores. Cuando el For encuentra dicho caracter o caracteres, se parte la frase en el siguiente token, y así sucesivamente.

En los parámetros "Tokens=2* Delims==" uso como caracter delimitador "=", e ignoro el token número 1 (lo que está a la izquierda del caracter delimitador "="), por que no es necesario leerlo.

Token 1 (o %%a): ro.product.device=
Token 2 (o %%b): valor

Saludos