elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  Acciones sobre archivos de texto. [Batch]
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 34 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 234,597 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #10 en: 13 Agosto 2009, 21:09 »

Aunque ya hayas encontrado solución, de todos modos te contesto.

Es posible trabajar con XML, pero es algo engorroso, pero si vas a volcar la salida del script que acabamos de hacer a un XML, podrías hacerlo a lo simple, así:

Editamos el script y lo dejamos asì:
code.bat:
Código
  1. @echo off
  2. for /f "tokens=3*" %%a in ('type "file.txt" ^| find /i "%date:~-4%"') do set "va
  3. riable=%%a %%b"
  4. for %%_ in (%variable%) do echo %%_
  5.  

Luego desde otro script, llamemosle "dudas.bat":
Código
  1. @echo off
  2. echo ^<ETIQUETA^> >> my_xml.xml
  3. call code.bat >> my_xml.xml
  4. echo ^</ETIQUETA^> >> my_xml.xml
  5.  
La salida de "my_xml.xml" sera esta:
Código:
C:\>type my_xml.xml
<ETIQUETA>
41
3.599
43.06523
23.57434
27.37795
18.57707
13.77606
34.56199
0
793.016
0
0
12.67301
19.74977
88.70969
35
</ETIQUETA>

C:\>

Para trabajar con XML te recomiendo PERL.


« Última modificación: 13 Agosto 2009, 21:12 por Leo Gutierrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #11 en: 13 Agosto 2009, 21:25 »

Muchas gracias Leo , si estoy viendo que es un poco laborioso crear los XML con batch,  el unico detalle  es que cada linea de datos seria una etiqueta la salida que busco es la siguiente:

Código:

<?xml version="1.0" encoding="UTF-8"?>
<mexico>
<vel_viento>3.599</vel_viento>
<dir_viento>43.06523</dir_viento>
<temp>23.57434</temp>
<sens_term>27.37795</sens_term>
<ind_calor>18.57707</ind_calor>
<p_rocio>13.77606</p_rocio>
<humedad>34.56199</humedad>
<evto>0</evto>
<pres_barom>793.016</pres_barom>
<red_solar>0</red_solar>
<precipitacion>0</precipitacion>
</mexico>


Estaba viendo y para poder manipular cada dato tendria que asignarlo a una variable diferente para poderlo insertar en donde yo quisiera.


En línea

KamuiDNA

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #12 en: 13 Agosto 2009, 23:46 »

Por fin me quedo el codigo como lo deseaba, estuve  viendo los ejemplos que pusieron y ahi encontre las respuestas a mis preguntas , obvio con la ayuda de Leo que me auxilio sin el no podria haber terminado mi proyecto, adjunto el codigo por si a alguien le sirve:

Código:
@echo off
for /f "tokens=3*" %%a in ('type "Cozumel_public.txt" ^| find /i "%date:~-4%"') do set "variable=%%a %%b"
for %%_ in (%variable%) do echo %%_

Aqui el segundo proceso para formatear los datos obtenidos en el primero en formato XML

Código:
@echo off
call Code.bat >> Temp.txt
del /F Cozumel.xml

setlocal enabledelayedexpansion
set contador=0
for /f "eol= tokens=* delims=" %%x in (Temp.txt) do (
set /a contador+=1
set linea!contador!=%%x
)
set linea


echo ^<?xml version="1.0" encoding="UTF-8"?> ^> >> Cozumel.xml
echo ^<cozumel^> >> Cozumel.xml
echo ^<vel_viento^>%linea2%^</vel_viento^> >> Cozumel.xml
echo ^<dir_viento^>%linea3%^</dir_viento^> >> Cozumel.xml
echo ^<temp^>%linea4%^</temp^> >> Cozumel.xml
echo ^<sens_term^>%linea5%^</sens_term^> >> Cozumel.xml
echo ^<ind_calor^>%linea6%^</ind_calor^> >> Cozumel.xml
echo ^<p_rocio^>%linea7%^</p_rocio^> >> Cozumel.xml
echo ^<humedad^>%linea8%^</humedad^> >> Cozumel.xml
echo ^<evto^>%linea9%^</evto^> >> Cozumel.xml
echo ^<pres_barom^>%linea10%^</pres_barom^> >> Cozumel.xml
echo ^<rad_solar^>%linea11%^</rad_solar^> >> Cozumel.xml
echo ^<precipitacion^>%linea12%^</precipitacion^> >> Cozumel.xml
echo ^</cozumel^> >> Cozumel.xml
del /F Temp.txt


Gracias por la ayuda =) espero a alguien le sirva.



Se me olvidaba mencionar son dos procesos el primero llamado Code y el segundo se llama Proceso , el que yo ejecuto es el segundo y este a su vez llama al primero.
« Última modificación: 14 Agosto 2009, 00:38 por KamuiDNA » En línea

Yatch

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #13 en: 16 Agosto 2009, 07:09 »

Código
  1. @echo off
  2. @title Borrador de Descripciones
  3.  
  4. :again
  5. cls
  6. echo ===============================
  7. echo == Borrador de Descripciones ==
  8. echo ===============================
  9. set /p desc_id=Enter ID:
  10. set file=desc.txt
  11.  
  12. setlocal enabledelayedexpansion
  13.  
  14. for /f "tokens=1 delims=[]" %%_ in ('type "%file%" ^| find /i /n "%desc_id%#"') do set "coincidencia=%%_"
  15. if not defined coincidencia (
  16. echo No se encontro ninguna coincidencia "%desc_id%#"
  17. goto end
  18. )
  19. :: Meter lineas de archivo.
  20. set /a "contador=0"
  21.  
  22. for /f "eol= tokens=* delims=" %%x in (%file%) do (
  23. set /a "contador+=1"
  24. set linea!contador!=%% style="color: #448888;">x
  25. )
  26.  
  27. for /l %%: in (%coincidencia%, 1, %contador%) do (
  28. if "!linea% style="color: #448888;">%:!"=="#" (
  29. set /a "coincidencia_final=%%:"
  30. goto:break
  31. )
  32. )
  33. :break
  34. if not defined coincidencia_final (
  35. echo No se encontro ninguna coincidencia
  36. goto end
  37. )
  38.  
  39. for /l %%: in (1,1, %contador%) do (
  40. if %%: lss %coincidencia% (echo !linea% style="color: #448888;">%:!>>desc2.txt)
  41. if %%: gtr %coincidencia_final% (echo !linea% style="color: #448888;">%:!>>desc2.txt)
  42. )
  43.  
  44. echo Descripcion: %desc_id% Borrada.
  45.  
  46. :end
  47. pause>nul
  48. goto again
  49. rem exit /b 0

Gracias men
Ahora como imprimo las lineas que elimine?
« Última modificación: 14 Marzo 2011, 22:48 por Leo Gutiérrez. » En línea

ovpaez

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #14 en: 24 Agosto 2009, 18:37 »

Hola perfectoo el codigo me refiere al de cambiar una frase por otra.. pero quisiera q dentro de ese mismo script poder seguir ejecutando otras instrucciones pero con el goto:eof se cierra el archivo y no se ejecuta lo demas como haria para q se siguiera ejecutando el script?? :-\ :-[ :silbar:
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #15 en: 25 Agosto 2009, 05:54 »

Hola perfectoo el codigo me refiere al de cambiar una frase por otra.. pero quisiera q dentro de ese mismo script poder seguir ejecutando otras instrucciones pero con el goto:eof se cierra el archivo y no se ejecuta lo demas como haria para q se siguiera ejecutando el script?? :-\ :-[ :silbar:
Hola, podrías poner el código que estás intentando.

También pon un ejemplo del archivo de texto que estás usando.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
ovpaez

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #16 en: 26 Agosto 2009, 17:30 »

Código
  1. if %1'==' (set p1=usuario
  2. set p2=usu
  3. set p3=Plantilla.inf) else (set p1=%1&& set p2=%2&& set p3=%3)
  4. echo.>$
  5. for /f "tokens=1,* delims=]" %%A in ('"type %p3%|find /n /v """') do (
  6.     set "current=%%B"
  7.     if defined current (
  8. call :stng %p1% %p2%
  9.     ) else echo.>>$
  10. )
  11. type $>%p3%
  12. type %p3%
  13. :stng
  14. call set current=%%current:%1=%2%%
  15. echo %current%>>$
  16.  
  17. goto : EOF
  18.  
  19. Shutdown -r -t 00 restart




Despues del goto:eof no se sigue ejecutando la siguiente instruccion q sera reiniciar la maquina :(
« Última modificación: 14 Marzo 2011, 22:48 por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #17 en: 27 Agosto 2009, 04:16 »

No se ejecuta por que está despues del GOTO:EOF

Goto:EOF, significa "ir al final del archivo", es decir, sale del archivo por lotes.

Prueba tu código así:
Código
  1. if %1'==' (
  2. set p1=usuario
  3. set p2=usu
  4. set p3=Plantilla.inf
  5. ) else (
  6. set p1=%1
  7. set p2=%2
  8. set p3=%3
  9. )
  10. echo.>$
  11. for /f "tokens=1,* delims=]" %%A in ('type %p3%|find /n /v ""') do (
  12.     set "current=%%B"
  13. )    
  14.     if defined current (
  15. call :stng %p1% %p2%
  16.     ) else echo.>>$
  17. )
  18. type $>%p3%
  19. type %p3%
  20. Shutdown -r -t 00 restart
  21. goto:eof
  22. :stng
  23. call set current=%%current:%1=%2%%
  24. echo %current%>>$
  25. goto : EOF
  26.  
« Última modificación: 14 Marzo 2011, 22:49 por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
ovpaez

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #18 en: 27 Agosto 2009, 15:48 »

 :-( no hac nada.. Ni reemplaza las palabras :( y mucho menos ejecuta la instrución.... Yo se lo que implica el goto: eof pero necesito que me permita seguir ejecutando instrucciones en el mismo script... help me!!
« Última modificación: 27 Agosto 2009, 15:56 por ovpaez » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #19 en: 27 Agosto 2009, 17:30 »

Sí te ayudo, pero tu también a mi.

¿Qué palabras quieres reemplazar?
¿Cual es el contenido del archivo?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 34 Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines