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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [AYUDA-BATCH]Cambiar datos de archivos .xml
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA-BATCH]Cambiar datos de archivos .xml  (Leído 10,819 veces)
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
[AYUDA-BATCH]Cambiar datos de archivos .xml
« en: 19 Junio 2009, 03:58 am »

Hola de nuevo a todos, espero que esten bien ^^*

bueno aca estoy tratando de hacer un bat que me ayude con unos archivos que necesitos editar..

a ver voy a a tratar de explicarme lo mejor posible

yo trabajo con varios archivos .xml que contienen un contenido (valga la redundancia ) como el siguiente
Código:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<skill id="301" levels="5" name="Summon Big Boom" enchantLevels1="30">
  <table name="#enchantNpcIds"> 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 </table>
  <enchant1 name="npcId" val="#enchantNpcIds"/>
  <table name="#mpConsume"> 74 82 88 94 100 </table>
  <table name="#itemConsumeCount"> 3 3 4 4 5 </table>
  <set name="mpConsume" val="#mpConsume"/>
  <set name="itemConsumeId" val="1458"/>
  <set name="itemConsumeCount" val="#itemConsumeCount"/>
  <set name="itemConsumeIdOT" val="1458"/>
  <set name="itemConsumeCountOT" val="5"/>
  <set name="itemConsumeSteps" val="4"/>
  <set name="summonTotalLifeTime" val="1200000"/>
  <set name="summonTimeLostIdle" val="500"/>
  <set name="summonTimeLostActive" val="1000"/>
  <set name="target" val="TARGET_SELF"/>
  <set name="reuseDelay" val="5000"/>
  <set name="hitTime" val="6000"/>
  <set name="skillType" val="SUMMON"/>
  <set name="isMagic" val="true"/>
  <set name="operateType" val="OP_ACTIVE"/>
  <!-- Summon-specific -->
  <table name="#npcIds"> 14702 14703 14704 14705 14706 </table>
  <set name="npcId" val="#npcIds"/>
  <set name="expPenalty" val="0.3"/> <!-- 30 percent of acquired Exp will be consumed. -->
  <table name="#ench1expPenalty"> 0.28 0.26 0.24 0.22 0.20 0.18 0.16 0.14 0.12 0.10 0.08 0.06 0.04 0.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 </table>
  <enchant1 name="expPenalty" val="#ench1expPenalty"/>
</skill>
<skill id="302" levels="9" name="Spoil Festival" enchantLevels1="30" enchantLevels2="30">
  <table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
  <enchant1 name="magicLvl" val="#enchantMagicLvl"/>
  <enchant2 name="magicLvl" val="#enchantMagicLvl"/>
  <table name="#magicLvl"> 28 36 43 49 55 62 66 70 74 </table>
  <table name="#mpConsume"> 73 93 113 131 150 172 183 194 204 </table>
  <table name="#ench12Power"> 0 1 2 2 3 4 4 5 6 6 7 8 8 9 10 10 11 12 12 13 14 14 15 16 16 17 18 18 19 20 </table>
  <set name="mpConsume" val="#mpConsume"/>
  <set name="magicLvl" val="#magicLvl"/>
  <set name="target" val="TARGET_AREA"/>
  <set name="skillRadius" val="200"/>
  <set name="reuseDelay" val="3000"/>
  <set name="hitTime" val="1800"/>
  <set name="lvlDepend" val="1"/>
  <set name="skillType" val="SPOIL"/>
  <set name="operateType" val="OP_ACTIVE"/>
  <set name="isDebuff" val="true"/>
  <set name="castRange" val="40"/>
  <set name="effectRange" val="400"/>
  <enchant1 name="power" val="#ench12Power"/>
  <enchant2 name="power" val="#ench12Power"/>
  <for>
    <effect name="Spoil" val="0"/>
  </for>
  <enchant1for>
    <effect name="Debuff" time="15" val="0" stackOrder="23" stackType="attack_time_up">
      <mul order="0x30" stat="pAtkSpd" val="0.77"/>
    </effect>
  </enchant1for>
  <enchant2for>
    <!-- Retail Values CT2.3: 118HP * 3 Sec -->
    <effect count="5" name="DamOverTime" time="3" val="354"/>
  </enchant2for>
</skill>
</list>
los archivos son mucho mas largos, osea su contenido, solo coloque una porcion del mismo para no hacer tan largo el post...
en fin lo que quiero hacer es lo siguiente, yo necesito editar una linea de cada mmmmm a ver como llamarlo..."SKILL"
llamese "SKILL" al contenido que esta dentro de
Código:
<skill> y </skill> 
, por ejemplo la linea que necesito editar es la siguiente
Código:
  <set name="target" val="TARGET_AREA"/>
y lo que necesito cambiar de esa linea es la frase "TARGET_AREA", por lo que io le diga (al code xD)
por ejemplo
Código:
"TARGET_AREA"
por
"TARGET_PARTY"
(obviamente sin las comillas ^^)
pero nose como hacerlo para no cambiar el demas contenido del los archivos...
a todo esto los archivos esta nombrados de la siguiente forma dentro de la carpeta
por ejemplo
Código:
10001-10025.xml
10369-20558.xml
y asi (son varios archivos).
Pero obviamente nose como hacerlo, es por eso que les pido su ayuda, da lo mismo en que lenguaje sea, lo ideal seria batch porke es de lo que entiendo mas (aunque no lo crean :xD), es que io creo que debe ser con un FOR pero no son mi fuerte :xD!!

Esperando que me puedan ayudar se despide atte

Francisko

SAludos y mucha gracias de ante mano


En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #1 en: 19 Junio 2009, 08:46 am »

El siguiente Script que hice, busca en "file.txt" (Esto tu lo cambias a tu conveniencia) la cadena :
Código:
target_area
Y edita la linea por la cadena "Leo Gutierrez" (Esto tu lo editas a tu conveniencia).
Código
  1. @echo off
  2. :: Leo Gutierrez R.
  3. :: Editar la linea con la coincidencia :
  4. :: <set name="target" val="TARGET_AREA"/>
  5. for /f "tokens=1 delims=[]" %%_ in ('type "file.txt" ^| find /i /n "target_area"') do call:edicion %%_
  6. goto:eof
  7. :edicion
  8. :: "Leo Gutierrez" es el valor que pondré.
  9. (
  10. echo %1
  11. echo ^^^<set name="target" val="Leo Gutierrez"/^^^>
  12. ) | edlin /b file.txt
  13. goto:eof

Ejecución:

Código:
C:\>type file.txt | find /i /n "target_area"
[39]  <set name="target" val="TARGET_AREA"/>
Vemos que la coincidencia esta en la línea 39.

Ejecuto el batch:
Código:
C:\>este.bat
Final del archivo de entrada
*39
      39:*  <set name="target" val="TARGET_AREA"/>
      39:*<set name="target" val="Leo Gutierrez"/>
*w
*e
Vemos como es editado el valor.

Código:
C:\>type "file.txt" | find /i /n "Leo Gutierrez"
[39]<set name="target" val="Leo Gutierrez"/>

C:\>
Por ultimo, busco en "file.txt" la cadena "Leo Gutierrez", y nos muestra la coincidencia y su linea.

Si quieres evitar que se muestre esto:
Código:
Final del archivo de entrada
*39
      39:*  <set name="target" val="TARGET_AREA"/>
      39:*<set name="target" val="Leo Gutierrez"/>
*w
*e

Agrega al código:
Código:
) | edlin /b file.txt > nul 2>&1


Para estos casos, valdría la pena echarle un vistazo a PERL.

Saludos.


« Última modificación: 19 Junio 2009, 08:51 am 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
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #2 en: 20 Junio 2009, 21:26 pm »

muchisimas gracias por tu respuesta, como siempre ayudando a los que sabemos menos , voy a probarlo a ver si me funiona ;D y posteo como me fue :D!, disculpapor la demora en responder, no tengo internet en la casa yu posteo desde cybers ^^

saludos y muchas gracias de nuevo :D
En línea

Asdf debería ser algún tipo de función.
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #3 en: 21 Junio 2009, 04:53 am »

Leo Guitierrez, probé tu code y funciona super bien cuando el archivo a editar se llama "file.txt", obviamente
le cambie el nombre a 1111-1222.xml para que procesara la informacion con ese nombre de archivo (porque los archivos estan nombrados de esa forma) y me aparece el siguiente error


lo probé solo cambiando la extension a FILE.XML y tampoko hay problema, ahora como todos los archivos tienen nombres con numero
es ahi cuando me da el error de "ENTRY ERROR", pero nose porke :S y me corta el nombre del archivo de
1111-1222.xml a 1111-122.xml y dentro del fichero coloca el siguiente caracter "" (sin las comillas) incluso se le coloco como nombre 1111-1222.txt y tambien pasa lo de que acorta el nombre del archivo y solo genera el caracter anterior. Igual lo que io estoy intentando hacer es algo como lo siguiente:

Necesito cambiarle la frase "TARGET_PARTY" a los archivos  que io le diga =) y no a todos por igual porque o si no quedaria una embarrada del porte de un buque y el programa que me carga esos archivos me daria mil y un errores =(.

por ejemplo:

suponiendo que estoy trabajando en la carpeta original y estan todos los archivos, como puedo hacer para YO decirle
al programa que archivos procesar y que parte de esos archivos procesar?
por ejemplo:
tengo el archivo

1200-1299.xml

que contiene el siguiente nombre de skill (llamese skill al contenido que esta dentro de <skill> y </skill>)

<skill id="1242" levels="3" name="Wind Walk" enchantLevels1="30" enchantLevels2="30">

entonces yo decirle que solo procese la parte del archivo que tiene el nombre "Wind Walk" y que solo a ese contenido le cambie lo que te pedia en el post principal?,

estuve tratando de usar el siguiente condigo para buscar el nombre de skill que quiero editar y asi que me diga el nombre del archivo que necesito para pasarcelo al code que me diste tu, pero me muestra todas las coincidencias para por ejemplo "Wind Walk"
Código:
SET /P buscar="ID Nombre de skill a editar: "
findstr /I /M /C:"%buscar%" *.xml >> salida.txt
y me muestra en el archivo salida.txt lo siguiente:
Código:
1100-1199.xml
1200-1299.xml
1300-1399.xml
2000-2099.xml
21000-21099.xml
22000-22099.xml
2300-2399.xml
23000-23099.xml
2400-2499.xml
26000-26099.xml
2800-2899.xml
4200-4299.xml
4300-4399.xml
4400-4499.xml
5100-5199.xml
5200-5299.xml
5600-5699.xml
7000-7099.xml
8952-9911.xml
pero es solo el archivo 1200-1299.xml el que contiene el nombre "Wind Walk", y nose como hacer para que me muestre solo las coincidencias para "Wind Walk" y solo ese, y asi yo pasarle ese archivo al FOR que me diste tu y que en ese for solo se edite lo que necesito, pero solo donde esta esa palabra y NO en todo el archivo.


muchas gracias por tu ayuda, espero que me puedas ayudar u orientar por lo menos...

saludos y que esten bien ^^*!
« Última modificación: 21 Junio 2009, 04:59 am por Panxulingo » En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #4 en: 21 Junio 2009, 06:58 am »

He descubierto que EDLIN solo procesa nombres de archivos de 8 caracteres, sin contar la extensión.

He ahí el problema.
En línea

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

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #5 en: 21 Junio 2009, 07:13 am »

u.u

bueno voy a ver como puedo hacerlo, de todas maneras muchas gracias por la ayuda
En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #6 en: 21 Junio 2009, 07:19 am »

Mira, podrías pedir al usuario el archivo, y luego trabajar con un archivo .xml temporal, cuando termine la edición, lo renombras al archivo original pedido.

Saludos.
En línea

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

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #7 en: 22 Junio 2009, 04:54 am »

voy a interntarlo asi muchas gracias leo saludos ^^
En línea

Asdf debería ser algún tipo de función.
netneko

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #8 en: 12 Enero 2012, 20:27 pm »

alguien sabe como hago para agregarle un tag al principio y al final de un archivo XML?
<Datos>
el XML q ya esta
</Datos>

:)
En línea

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

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [AYUDA-BATCH]Cambiar datos de archivos .xml
« Respuesta #9 en: 12 Enero 2012, 21:40 pm »

alguien sabe como hago para agregarle un tag al principio y al final de un archivo XML?
<Datos>
el XML q ya esta
</Datos>

:)

El tema que reabriste es del 2009, lee las reglas, va en contra de ellas abrir temas viejos.

Si quieres que se te ayude abre un nuevo tema con tu duda.
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] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Ayuda guardando archivos de texto a php
Scripting
Geormarsch 2 4,079 Último mensaje 20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
[BATCH] Cambiar extension a archivos
Scripting
ovichan 5 8,307 Último mensaje 27 Septiembre 2012, 16:32 pm
por Eleкtro
VBS/BATCH cambiar línea o sustituir caracteres en archivos
Scripting
derryp7r 3 3,401 Último mensaje 20 Noviembre 2012, 15:20 pm
por Eleкtro
Ayuda por favor. Batch que almacene datos en un txt consultable
Scripting
VicInFlames 1 3,297 Último mensaje 12 Agosto 2013, 09:39 am
por Meine programmen
AYUDA A MOVER ARCHIVOS Y ENLISTAR A WINAMP CON BATCH VERSION 2
Scripting
Dsalomon 0 1,549 Último mensaje 4 Febrero 2019, 08:21 am
por Dsalomon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines