elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 07:56  

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez.)
| | |-+  Acciones sobre archivos de texto. [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 46,508 veces)
dazofeifa

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #30 en: 26 Noviembre 2009, 21:59 »

Hola, no encontré algo parecido a lo que ocupo: requiero tomar un archivo de texto generado por un Backup y extraer de él una parte de texto de una las lineas, para luego tomar esa parte del texto para realizar otra acción, específicamente, es el nombre y ruta de los archivos que no se pudieron respaldar porque están en uso, para luego con este nombre de archivo y su ruta, llamar a otro tipo de backup que funciona aunque los archivos estén bloqueados. He logrado extraer del log la línea donde muestra el error (con for y findstr y asignando valor a variable) pero, no se cómo sacar de ella sólo lo que necesito.  Eje:
La linea extraída es:
Código:
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
yo solo ocupo : D:\Respaldo\out\res.pst (este dato es variable de acuerdo al archivo que esté bloqueado).

Agradezco su ayuda.


« Última modificación: 27 Noviembre 2009, 02:39 por Leo Gutierrez. » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #31 en: 27 Noviembre 2009, 02:53 »

¿Qué código has utilizado para obtener esta línea?:
Código:
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst


En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
flony

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #32 en: 27 Noviembre 2009, 13:25 »

dazofeifa deberias usar la extraccion de caracteres es
Citar
nos permita obtener "trozos" de variables llamados subcadenas, existen varias formas para ello, siendo la principal:
Código:
Código:
SET VariableResultado=%VariableOriginal:~m,n%

Almacena en la VariableResult ado la subcadena que existen en la VariableOrigin al desde la posición "m" durante "n" caracteres.

En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #33 en: 27 Noviembre 2009, 17:18 »

En cualquier caso yo buscaría la solución en Perl, mira este ejemplo:

Código
#!/usr/bin/perl
use warnings;
use strict;
open(FILE, q[<], "file.txt") or die("No se pudo acceder al archivo. $!\n");
while(<FILE>)
{
if(/:/)
{
print(split(/.*File\s/, $_));
}
}
exit(0);
 

Tengo este archivo de texto similar a lo que tu obtienes:
Código:
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Respaldo\out\res.pst
2009/11/23 14:02:15 ERROR 33 (0x00000021) Copying File D:\Ruta espacios\etc jkalaksd\file.algo

Y lo que obtengo al ejecutar el script:

Código:
leo@lein:~/Escritorio$ perl pl.pl
D:\Respaldo\out\res.pst
D:\Respaldo\out\res.pst
D:\Respaldo\out\res.pst
D:\Respaldo\out\res.pst
D:\Respaldo\out\res.pst
D:\Ruta espacios\etc jkalaksd\file.algo
leo@lein:~/Escritorio$
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
<< Lucas, ¿quién más? >>

Desconectado Desconectado

Mensajes: 51


ANTI KIRCHNER- MONTONEROS - TERRORISTAS Y ASESINOS


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #34 en: 3 Diciembre 2009, 20:17 »

Buena información, justo que me estaba olvidando un poco de todo esto. Me viene al pelo en un trabajo que debo presentar
Saludos
En línea



Personalmente, prefiero tecnologías de Microsoft. Yo reconozco que defendí el software libre, pero ahora yo quiero vivir de esto. Mi trabajo.
carlosguay

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #35 en: 8 Diciembre 2009, 21:32 »

Ya que mi problema es de archivos de texto, lo pongo aqui por no abrir otro hilo.

Primero decir que gracias a este hilo, e podido solucionar muchas de las cosas que estoy haciendo com mis archivos, gracias a leo por este aporte.

Vereis tengo un problema que no se como solucionar con este archivo.

 
Citar
ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd 
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72 
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55 
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45 
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36| .].~...e.l76

LINEA CON TEXTO



Este archivo, en la parte de la derecha, lleva codigo acssi, que como veis no tengo problema en quitarlo, pero ya veis que en el penultimo renglon ya que la parte de hex no llega hasta el final, pues me deja parte del acssi.

Os pondria de las formas que e intentado quitar la ultima linea y la parte de acsii, pero ya se me an olvidado, xd, siempre consigo esto.


Citar

ad 55 6b b9 ad b6 ef ba 05 bc 36 9d 3c 86 43 38
bf cf 2f bf 4a 8b d7 09 4d 02 41 00 bc c7 88 fd
f7 19 be aa 03 c6 18 ee b3 2c b9 b8 73 89 0b 72
06 57 8b c9 77 b3 79 c3 4f 5f db 60 e7 89 bd 55
06 90 79 12 f6 84 67 b1 84 c4 dc 22 5b 3a 7f 45



Como veis no solo borro la ultima linea y la parte de acsii, sino que tambien borro la linea completa y se seguro que es por |, toma como ultima linea esa y eso es lo que pasa.

Pues si alquien me puede ayudar, me haria un gran favor.

saludos


En línea
pmabres

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #36 en: 14 Diciembre 2009, 14:41 »

Buenas... estoy en el trabajo intentando hacer un script para insertar datos desde archivos .dbf en una base de datos oracle... desde esos dbf puedo generar dos archivos .sql (uno que trae la creacion de tablas y otro que trae los inserts a hacer)... el problema que tengo ahora es que los insert deberian llevar el nombre de la tabla luego de la instruccion "insert into"... pero no hay nada. Casualmente el nombre de cada tabla es el nombre del archivo en donde se encuentra cada insert pero sin la extension .sql
mi pregunta es...
como hago para poner el nombre del archivo mismo en el que esta cada insert, luego de cada instruccion insert into
En línea
pmabres

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #37 en: 14 Diciembre 2009, 17:12 »

bueno pude hacer lo que queria pero lo que no puedo hacer ahora es cambiar el texto que quiero reemplazar por el texto que quiero reemplazar + una variable "que toma el nombre del archivo"

aca esta mi codigo....
Código:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%x in ('type C:\MB\DATOS\MB\insert\*.sql') do (
for %%p in (C:\MB\DATOS\MB\Insert\*.sql) do (
set nombre=%%~np
set linea=%%x
set linea=!linea:INTO=INTO %nombre%!
call :show !linea!
))
goto:eof
:show
echo %nombre%
pause
echo %* >> C:\MB\DATOS\MB\insert\%nombre%.sql
goto:eof

En línea
pmabres

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #38 en: 14 Diciembre 2009, 19:56 »

Código:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%x in ('type C:\MB\DATOS\MB\insert\final\*.sql') do (
for %%p in (C:\MB\DATOS\MB\Insert\final\*.sql) do (
set nombre=%%~np
set linea=%%x
set linea=!linea:INSERT INTO=INSERT INTO TMP_%%~np!
call :show !linea!
))
goto:eof
:show
echo %* >> C:\MB\DATOS\MB\insert\%nombre%.sql
goto:eof
con esto estaria solucionado el tema del nombre del archivo....

el tema es que inserta dos veces los datos en el mismo file... no saben como peudo hacer para solucionar esto?

ya se que hace dos veces el for, pero no encuentro la manera de sacar el nombre del archivo actual, y de usar el type para meter los datos en una variable
« Última modificación: 14 Diciembre 2009, 20:00 por pmabres » En línea
pmabres

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #39 en: 14 Diciembre 2009, 22:32 »

pude solucionarlo!... un poco rústico pero pude jeje... dejo el codigo por las dudas

Código:
@echo off
setlocal enabledelayedexpansion
for %%p in (C:\MB\DATOS\MB\Insert\orig\*.sql) do (
set nombre=%%~np
type %%~fp > temp.txt
for /f "tokens=* delims=" %%x in ('type temp.txt') do (
set linea=%%x
set linea=!linea:INSERT INTO=INSERT INTO TMP_%%~np!
call :show !linea!
))
goto:eof
:show
echo %* >> C:\MB\DATOS\MB\insert\temp\%nombre%.sql
goto:eof


lo que hice fue crear un archivo temporal, que luego se borrará
En línea
geoclima

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #40 en: 7 Marzo 2010, 15:09 »

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:
Código:
<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
Código:
@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
Código:
<?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:
Código:
<?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!
« Última modificación: 7 Marzo 2010, 17:05 por Leo Gutiérrez. » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #41 en: 7 Marzo 2010, 17:09 »

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.
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
geoclima

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #42 en: 7 Marzo 2010, 17:27 »

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!!
En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Conectado Conectado

Mensajes: 2.940


/^$/


Ver Perfil WWW
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #43 en: 7 Marzo 2010, 17:31 »

Ponme el archivo ya creado con el problema(los espacios esos que comentas).
En línea

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

leorocko13@hotmail.com
https://github.com/leogtzr/
geoclima

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #44 en: 7 Marzo 2010, 18:03 »

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??
« Última modificación: 7 Marzo 2010, 23:36 por geoclima » En línea
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines