Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Dead0922 en 21 Abril 2009, 13:32 pm



Título: Leer xml desde archivo batch
Publicado por: Dead0922 en 21 Abril 2009, 13:32 pm
Hola a todos,
Tengo un proceso en batch donde le pasaba 2 parámetros uno por uno, pero ahora necesito leerlos desde un archivo xml, en este xml tengo agrupados los parámetros como propiedades, y quiero q para todo lo q tenga en el xml se ejecute con lanzar una sola vez el proceso batch.
Si alguien me puede ayudar, le agradecería muchiiiiiiiisimo   :-*


Título: Re: Leer xml desde archivo batch
Publicado por: SmartGenius en 21 Abril 2009, 13:51 pm
Podrias poner que formato tiene el XML par asi poder ayudarte, tambin que es es lo que quieres hcer con esos datos.....asi sin nada no podemos hacer mucho :P

Saludos.


Título: Re: Leer xml desde archivo batch
Publicado por: Dead0922 en 22 Abril 2009, 09:56 am
Por ejemplo, los datos que manejo son:
<argumento>
            <nombre>xxxxxxxxxxxx1</nombre>
            <tipo>yyyyyyyyyy.zip</tipo>
</argumento>

ahora, esta estructura se puede repetir, las veces que el usuario lo requiera (modificando el xml), aparte.. internamente en el batch se hace una búsqueda según el "tipo" dentro de la carpeta que se especificó en "nombre"(eso ya lo tengo, pero para un solo grupo de argumentos... no para muchos en caso que estos pasen como xml)

Entonces mi duda es: como hago que el batch lea este archivo xml, que tiene agrupados los argumentos????? para que despues los pueda procesar uno por uno????

Gracias  :-\


Título: Re: Leer xml desde archivo batch
Publicado por: SmartGenius en 23 Abril 2009, 21:12 pm
Suponiendo que toda la estructura de datos en el XML es tal cual como la posteas...

<argumento>
            <nombre>xxxxxxxxxxxx1</nombre>
            <tipo>yyyyyyyyyy.zip</tipo>
</argumento>

Habria que usar FOR y FIND para buscar y separar las cadenas y definirlas en variables para despues poder trabajar con ellas...

Ej:
DATOS.XML
Código:
<argumento>
            <nombre>SmartGenius</nombre>
            <tipo>Usuario</tipo>
</argumento>
<argumento>
            <nombre>Novlucker</nombre>
            <tipo>Moderador</tipo>
</argumento>
<argumento>
            <nombre>Leo Gutierrez</nombre>
            <tipo>Moderador</tipo>
</argumento>
<argumento>
            <nombre>0x0309</nombre>
            <tipo>Usuario</tipo>
</argumento>

Podria realizar algo como esto...

LeeDatos.Bat
Código
  1. @echo off
  2. ::Coded by SmartGenius
  3.  
  4. setlocal enabledelayedexpansion
  5. :Init
  6. for /f "tokens=3 delims=^>^<" %%a in ('find "nombre" datos.xml') do (
  7. set /a N+=1
  8. set Nombre!N!=%% style="color: #448888;">a
  9. )
  10. for /f "tokens=3 delims=^>^<" %%b in ('find "tipo" datos.xml') do (
  11. set /a T+=1
  12. set Tipo!T!=%% style="color: #448888;">b
  13. )
  14. echo. Datos del XML
  15. for /l %%c in (1,1,!N!) do (echo. Dato%%c: !Nombre%% style="color: #448888;">c! - !Tipo%% style="color: #448888;">c!)

Saludos.


Título: Re: Leer xml desde archivo batch
Publicado por: Dead0922 en 30 Abril 2009, 12:23 pm
Hola, gracias por lo de xml, me sirvió muchísimo.
Ahora mi duda es, que a medida q vaya leyendo del xml, tengo q almacenar los datos en variables temporales y despues hacer algunas instrucciones if y pasar al siguiente valor de la variable, lo estoy haciendo usando etiquetas.. pero en algún momento el valor de la variable se pierde o quizas estoy capturandolo mal ya que no se como funciona eso del %%. En fin... tengo esto

Código:
for /l %%c in (1,1,!N!) do (

echo. !ValorPrimeraVariable%%c! - !ValorSegundaVariable%%c!
cd /d "%homedrive%\Ruta\!ValorPrimeraVariable%%c!"
for /d /r %%_ in (*) do (
if exist "%%_\!ValorSegundaVariable%%c!" (
call :copia "%%_\!ValorSegundaVariable%%c!"
    )
)
goto:eof
   )
:copia
echo. Entrando al COPIA
**************Esta es mi duda.. como hago para leer el valor q tengo al inicio.. pero desde aqui.


Espero me puedan ayudar!
Muchas Gracias


Título: Re: Leer xml desde archivo batch
Publicado por: leogtz en 30 Abril 2009, 21:24 pm
Necesitas poner el codigo entero.


Título: Re: Leer xml desde archivo batch
Publicado por: Dead0922 en 6 Mayo 2009, 10:58 am
@echo off
setlocal enabledelayedexpansion
:Init
for /f "tokens=3 delims=^>^<" %%a in ('find "nombre" datos.xml') do (
   set /a N+=1
   set Nombre!N!=%%a
)
for /f "tokens=3 delims=^>^<" %%b in ('find "tipo" datos.xml') do (
   set /a T+=1
   set Tipo!T!=%%b
)
if not exist "%homedrive%\File" md "%homedrive%\File"

echo. Obteniendo datos de XML
for /l %%c in (1,1,!N!) do (
   echo. Dato%%c: !Nombre%%c! - !Tipo%%c!
        cd /d "%homedrive%\Ruta\!Nombre%%c!"
   for /d /r %%_ in (*) do (
      if exist ""%%_\%Tipo%"" (
                                        call :copia "%%_\%Tipo%")
                                      )
                                 )
:copia
cd /d "%homedrive%\File"
echo !Nombre%%c!_!Tipo%%c!
copy /y %1 "%homedrive%\File\%Nombre%_%Tipo%"

echo Proceso Completo
pause
exit

------------------------------------------------------------------------------------------
No se si estoy llamando mal a las variables o cual es mi error?.. lo cierto es que
en la etiqueta "copia".. ya no se muestran los valores.. y yo lo q tengo q hacer es según cada par de valores que obtenga del xml, hacer una búsqueda y el resultado de la búsqueda (si existe) copiarlo en otra carpeta!



Título: Re: Leer xml desde archivo batch
Publicado por: Dead0922 en 8 Mayo 2009, 09:29 am
ya resolví el problema...
dentro del for hago todo sin llamar a la etiqueta, bueno hasta ahora funciona bien.. si tienen otra solucion... me avisan

gracias


Título: Re: Leer xml desde archivo batch
Publicado por: Dead0922 en 8 Mayo 2009, 13:20 pm
Hola denuevo,
quisiera saber como hago para leer parámetros que están dentro de un archivo .ini e ir usándolos en el script de batch.
Gracias!