Acciones sobre archivos de texto. [Batch]

Iniciado por leogtz, 24 Enero 2009, 00:30 AM

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

geoclima

#40
hola

he estado consultando el las distintas respuesta pero sigo teniendo un problema cuando intento crear un archivo. Os cuento.

Yo tengo un archivo XML llamado p11xand1.xml:

<root id="and">
<elaborado>2010-03-06T06:00:00</elaborado>
<validez_ini>2010-03-06T06:00:00</validez_ini>
<validez_fin>2010-03-07T00:00:00</validez_fin>
<actualizacion></actualizacion>
<prediccion>
<fenom_sign>
<p>
PRECIPITACIONES QUE PODRAN SER PERSISTENTES, LOCALMENTE FUERTES Y<br/>
OCASIONALMENTE ACOMPANADAS DE TORMENTAS EN EL TERCIO OCCIDENTAL Y<br/>
EL AREA DEL ESTRECHO DURANTE LA MANANA. VIENTOS FUERTES DE<br/>
COMPONENTE ESTE EN CEUTA Y EL LITORAL MEDITERRANEO, DONDE HABRA<br/>
RACHAS DE MUY FUERTES.
</p>
<p>
<br/>
</p>
</fenom_sign>
<txt_prediccion>
<p>
MUY NUBOSO O CUBIERTO CON PRECIPITACIONES MODERADAS, MAS<br/>
FRECUENTES E INTENSAS EN EL TERCIO OCCIDENTAL Y AREA DEL ESTRECHO,<br/>
DONDE PODRAN SER PERSISTENTES, LOCALMENTE FUERTES E IR ACOMPANADAS<br/>
DE TORMENTAS DURANTE LA MANANA, DISMINUYENDO LA INTENSIDAD POR LA<br/>
TARDE. LA COTA DE NIEVE SE SITUARA ALREDEDOR DE 1300 METROS EN LA<br/>
MITAD ORIENTAL.TEMPERATURAS EN LIGERO A MODERADO DESCENSO, MAS<br/>
ACUSADO EN LA MITAD OCCIDENTAL. VIENTOS DEL SUDESTE, FLOJOS A<br/>
MODERADOS EN EL INTERIOR Y MODERADOS A FUERTES EN EL LITORAL<br/>
ATLANTICO Y ZONAS ALTAS DEL INTERIOR, SIENDO FUERTES DEL ESTE EN<br/>
EL LITORAL MEDITERRANEO, DONDE HABRA RACHAS DE MUY FUERTE, MELILLA<br/>
Y CEUTA. LEVANTE MODERADO A FUERTE EN EL ESTRECHO.
</p>
</txt_prediccion>
</prediccion>
</root>


este archivo no tiene la cabecera para la transformación xsl y con un bat añado la cabecera que tengo en otro archivo

el archivo BAT
@echo off
(
ECHO 1d
ECHO E
) | EDLIN /B p11xand1.xml > nul 1>&0
type prevision.add > p11xand1.tmp
type p11xand1.xml >> p11xand1.tmp
move /y p11xand1.tmp p11xand1.xml
del p11xand1.bak

coge la cabecera del archivo prevision.add
<?xml version="1.0" encoding="ISO-8859-15" ?>
<?xml-stylesheet type="text/xsl" href="prevision.xsl"?>

y lo uno todo en el archivo original obteniendo al final un archivo con el mismo nombre p11xand1.xml con el contenido:
<?xml version="1.0" encoding="ISO-8859-15" ?>
<?xml-stylesheet type="text/xsl" href="prevision.xsl"?>
<root id="and">
<elaborado>2010-03-06T06:00:00</elaborado>
<validez_ini>2010-03-06T06:00:00</validez_ini>
<validez_fin>2010-03-07T00:00:00</validez_fin>
<actualizacion></actualizacion>
<prediccion>
<fenom_sign>
<p>
PRECIPITACIONES QUE PODRAN SER PERSISTENTES, LOCALMENTE FUERTES Y<br/>
OCASIONALMENTE ACOMPANADAS DE TORMENTAS EN EL TERCIO OCCIDENTAL Y<br/>
EL AREA DEL ESTRECHO DURANTE LA MANANA. VIENTOS FUERTES DE<br/>
COMPONENTE ESTE EN CEUTA Y EL LITORAL MEDITERRANEO, DONDE HABRA<br/>
RACHAS DE MUY FUERTES.
</p>
<p>
<br/>
</p>
</fenom_sign>
<txt_prediccion>
<p>
MUY NUBOSO O CUBIERTO CON PRECIPITACIONES MODERADAS, MAS<br/>
FRECUENTES E INTENSAS EN EL TERCIO OCCIDENTAL Y AREA DEL ESTRECHO,<br/>
DONDE PODRAN SER PERSISTENTES, LOCALMENTE FUERTES E IR ACOMPANADAS<br/>
DE TORMENTAS DURANTE LA MANANA, DISMINUYENDO LA INTENSIDAD POR LA<br/>
TARDE. LA COTA DE NIEVE SE SITUARA ALREDEDOR DE 1300 METROS EN LA<br/>
MITAD ORIENTAL.TEMPERATURAS EN LIGERO A MODERADO DESCENSO, MAS<br/>
ACUSADO EN LA MITAD OCCIDENTAL. VIENTOS DEL SUDESTE, FLOJOS A<br/>
MODERADOS EN EL INTERIOR Y MODERADOS A FUERTES EN EL LITORAL<br/>
ATLANTICO Y ZONAS ALTAS DEL INTERIOR, SIENDO FUERTES DEL ESTE EN<br/>
EL LITORAL MEDITERRANEO, DONDE HABRA RACHAS DE MUY FUERTE, MELILLA<br/>
Y CEUTA. LEVANTE MODERADO A FUERTE EN EL ESTRECHO.
</p>
</txt_prediccion>
</prediccion>
</root>

el problema.... que cuando se crea el archivo combinado aparece un espacio al final del archivo, detrás de </root> de modo que el navegador web no lo abre. Como puedo hacer este proceso (en bat preferiblemente) y que el archivo final se pueda abrir, es decir que después de </root> no haya ningun espacio?

Muchas gracias!!!!! de antemano!

leogtz

Podrías detectar la línea que quieres corregir, meterla en una variable y editarla con EDLIN.

O podrías usar extracción de caracteres para eso.
En la noche veo si tengo acceso a una máquina con Windows y te ayudo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

geoclima

Hola! aquí está el problema! cuando se unen los dos archivos aparecen unos espacios en blanco al final y esto hace que el archivo xml no se pueda abrir. Esperaré tu respuesta! Gracias!!

leogtz

Ponme el archivo ya creado con el problema(los espacios esos que comentas).
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

geoclima

#44
Aquí tienes los archivos:

el archivo original es p11xand1.xml

http://www.dalmaubover.org/meteorol/p11xand1.xml

además hay el archivo prediccion.add que contiene la cabecera que se le tiene que añadir al xml

Esto es porque para visualizarlos utilizo la plantilla prevision.xsl

http://www.dalmaubover.org/meteorol/prevision.xsl

Para unirlos tengo este archivo bat "cabecera.bat" que primero borra la primera linea de p11xand1.xml y luego escribe en de nuevo el archivo poniendo primero el texto de prediccion.add y luego el otro archivo sin la primera linea. El archivo final se llama p11xand1f.xml.

http://www.dalmaubover.org/meteorol/cabecera.bat
http://www.dalmaubover.org/meteorol/prediccion.add

http://www.dalmaubover.org/meteorol/p11xand1f.xml

Pero como puedes comprovar el archivo final no se puede abrir pues al final del documento hay unos espacios en blanco que no dejan bien formado el archivo xml y por lo tanto no se puede abrir.


¿Sería muy complicado hacer este mismo proceso con Perl??

geoclima

Hola Leo,

subí los archivos a mi servidor para que puedas chequearlos. Una pregunta.... como seria el mismo proceso en PERL, es decir

unir el contenido del archivo prediccion.add y p11xand1.xml para obtener un tercer archivo que se pueda abrir sin problema en el navegador?

ALBERT

leogtz

#46
Es que no te pido que subas todos los archivos y demás, solo que me pongas el archivo aquí mismo, pegalo y etiquetalo y hazme evidente el error que tiene, para poder tratarlo.

Así me lo complicas mucho.

A simple vista se nota que el problema lo deja edlin al editar, deja un caracter al final de las líneas.

Podríamos usar sed(no está en Windows, hay que descargarlo) para eliminar dicha línea.
Código (dos) [Seleccionar]

@echo off
:: Conseguir el numero de lineas:
for /f "tokens=1" %%_ in ('type "shit.txt" ^| find /v /c ""') do (set /a n_lines="%%_");
:: Eliminar la ultima linea:
sed %n_lines%d "shit.txt"


Claro que necesitas a sed.
El archivo "shit.txt" lo cambias por tu archivo a modificar.

O incluso más facil:
type "file.txt" | sed $d
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

M_A_R_T_I_N

#47
Hola, la verdad que me fue muy util, pero tengo un tema que no pude resolver:

Quiero modificar una linea que empieza con < y el bat se me queda diciendo que no esperaba <

Ej:

111
222
333


y quiero que quede:

111
<span style="font-size: 10pt; color: blue; font-f...........
333


Estoy usando:


@echo off
(
echo 'aca pongo la linea que modifico
echo "   <span style="font-size: 10pt; color: blue; font-f.......
echo w
echo e
) | edlin /b c:\mail\prepos.htm


Si le pongo comillas me lo modifica, pero cuando abro el htm me muestra las comillas, se podran sacar de alguna manera? Una queda al principio de la linea y la otra al final.

El script anda perfecto pero se queda con el signo <

Desde ya muchas gracias, es el primer mensaje que escribo si algo esta mal en la redecion del mensaje avisenme.

Muchas Gracias.

xassiz_




YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com