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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  edicion de fichers de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: edicion de fichers de texto  (Leído 3,363 veces)
diablo_jr

Desconectado Desconectado

Mensajes: 2


Ver Perfil
edicion de fichers de texto
« en: 19 Abril 2011, 09:01 am »

Buenas a todos.

Necesito recorrer con un script en batch un archivo de y en cada linea modificar ciertos caracteres. El script es el siguiente:

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /F "tokens=*" %%x in (file.xml) do (
  4. set linea=%%x
  5. set linea=%linea:script=XXXXXX%
  6. echo !linea!>>file.xml)
  7. )

Basicamente si quito la segunda linea de dentro del bucle me hace un volcado completo del xml pero si la dejo me da errores de tipo:

No se esperaba >& en este momento.

Hay que tener en cuenta que el xml puede tener " & > < y %.

He probado a hacer la siguiente modificación:

Código
  1. @echo off
  2. for /F "usebackq tokens=*" %%x in (file.xml) do (
  3. call :tratalinea "%%x"
  4. )
  5. goto sustituirCambios
  6. :tratalinea
  7. set linea=%1
  8. set linea=%linea:<=^<%
  9. set linea=%linea:>=^>%
  10. set linea=%linea:&=^&%
  11. set linea=%linea:script=XXXXXX%
  12. echo %linea:~1,-1%>>file.tmp
  13. goto :eof
  14. :sustituirCambios
  15. ren file.tmp file_edit.xml
  16. :fin
  17.  
Pero me desaparecen los signos % al pasar el parametro a la función.

¿¿¿Alquien me puede ayudar???


En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: edicion de fichers de texto
« Respuesta #1 en: 19 Abril 2011, 16:29 pm »

Prueba colocando dobles "%" para que no se te reemplazen .

Saludos.


PD: Si eso no era , ps nada que hacer xD


En línea

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

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: edicion de fichers de texto
« Respuesta #2 en: 20 Abril 2011, 12:27 pm »

No he entendido muy bien en cual de los dos códigos me dices que pongas los dobles %. De todos modos, ya tengo el código final casi listo, pero sigo con un problema similar.

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /A escribir=1
  4. for /F "tokens=*" %%x in (file.xml) do (
  5. set linea=%%x
  6. set linea=%!linea!:amp;amp;=amp;%
  7. set linea=%!linea!:amp;#=#%
  8. if "!linea!" == "<TEXTO>" (set /A escribir=0)
  9. if "!linea!" == "<url>" (set /A escribir=0)
  10. if "!escribir!" == "1" (echo !linea!>>file.tmp)
  11. if "!linea!" == "</TEXTO>" (set /A escribir=1)
  12. if "!linea!" == "</url>" (set /A escribir=1)
  13. )
  14. ren file.tmp file_edit.xml

Con esto consigo filtrar ciertos campos del xml que me llega (los pinta todos menos "TEXTO" y "url") para que pese menos a la hora de tratarlos.

El caso es que me aparecen elementos del tipo &amp;amp; o &amp;#255; y quiero sustituir los &amp; por el & pero las dos lineas de reemplazo no me hacen lo correcto (todas las lineas del archivo resultante son amp;#=#

¿alguna idea?
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: edicion de fichers de texto
« Respuesta #3 en: 20 Abril 2011, 18:46 pm »

A ver, si entendi lo que queires, deberias modificar esta linea:
Código
  1. set linea=%!linea!:amp;#=#%
  2.  

Y dejarla Así

Código
  1. set linea=%!linea!:^&amp;#=#%
  2.  

Archivo Test.xml

Código:
&amp;amp; 
&amp;amp;
&amp;amp;
&amp;amp;
&amp;amp;
&amp;amp;
&amp;amp;
&amp;amp;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;
&amp;#255;

Corriendo el script con la linea modificada :
Salida.
Código:
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#
&amp;#=#


Eso es lo que entendí xD

Espero haberte ayudado, aunque lo dudo xD


PD: Si quieres que CMD se "salte" algun caracter especial debes colocar el caracter "^" delante del caracter que quieres que se salte la cmd.




En línea

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


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: edicion de fichers de texto
« Respuesta #4 en: 21 Abril 2011, 20:50 pm »

Cierra la declaracion de variables con comillas:
Código
  1. set "linea=%%x"
  2. set "linea=%linea:script=XXXXXX%"
  3.  

Usa expansión retardada para expandir linea dentro del for.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
poner texto apretando boton en Caja de texto
Programación Visual Basic
patricio05 3 4,065 Último mensaje 4 Noviembre 2006, 01:14 am
por byebye
Problema de texto al poner un texto muy largo, alguna forma de cortarlo?
PHP
XXXXXX 5 8,381 Último mensaje 21 Junio 2010, 04:51 am
por XXXXXX
copiar valor de caja de texto en otras cajas de texto
Desarrollo Web
margarita02 7 16,799 Último mensaje 24 Febrero 2011, 23:45 pm
por margarita02
[duda simple] Edicion de Texto « 1 2 »
Ingeniería Inversa
GaudyG 10 5,671 Último mensaje 2 Abril 2011, 17:46 pm
por apuromafo CLS
Programa edición imagenes texto editable « 1 2 »
Software
sunbikers 13 4,233 Último mensaje 30 Septiembre 2024, 16:26 pm
por sunbikers
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines