Ms-Dos - Ciclo For

 
Vista:

Ciclo For

Publicado por JM (8 intervenciones) el 23/06/2010 23:31:19
Que tal amigos, necesito apoyo de parte de uds. No tengo experiencia en el desarrollo de archivos bat y necesito actualmente realizar una tarea en donde leo unos archivos log y trato de buscar una cadena específica dentro de cada uno de estos archivos. El script que me he inventando como que únicamente lee el último. A continuación les paso el segmento de código a ver quien puede darme una mano, si hay algo que esta mal o se puede optimizar, perfecto.
Gracias de antemano.

for %i in (dir /B exp*.log) do
findstr /m "\<completed\>" expfull_CRMTR_*.log
if %errorlevel%==0 (
echo COMPLETADO expfull_CRMTR.log >> resexp.txt
)else (
echo FALLIDO expfull_CRMTR.log >> resexp.txt
)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ciclo For

Publicado por Antoni Masana (295 intervenciones) el 24/06/2010 07:20:03
No entiendo que es lo que pretendias con esto:

for %i in (dir /B exp*.log) do
findstr /m "\<completed\>" expfull_CRMTR_*.log
if %errorlevel%==0 (
echo COMPLETADO expfull_CRMTR.log >> resexp.txt
)else (
echo FALLIDO expfull_CRMTR.log >> resexp.txt
)


Pero quizas esto funcione mejor

for %%a in (dir /B exp*.log) do (
findstr /m "\<completed\>" %%a
if %errorlevel%==0 (
echo COMPLETADO %%a >> resexp.txt
)else (
echo FALLIDO %%a >> resexp.txt
)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ciclo For

Publicado por JM (8 intervenciones) el 24/06/2010 17:07:33
Gracias Antoni, pero esto no me funciona, en cuanto a tu consulta de que pretendo, me parece que lo explique en el post principal.
Lo que pretendía hacer era, buscar dentro de varios archivos logs (*.log) una cadena, en este caso "completed". Si la encontraba, que me almacenara en un archivo COMPLETADO, si no, entonces FALLIDO. No solamente es un archivo, son más de uno, por tanto necesito un ciclo for, me parece a mi, para poder leer cada uno y que valide en el archivo si la cadena existe.
La modificación que realizaste tengo entendido que es para un archivo bat, anteponiendo doble signo de percent (%%a), pero en este caso como lo estoy probando por línea de comando directa, solamente pongo un percent (%a), esto lo explicaban en un sitio web, no se si es cierto o no.
Como les comente no se de programación en bat, hago mi esfuerzo, si estoy equivocado, bienvenida cualquiera aclaración, con tal de mejorar, se agradece.
Gracias de antemano y si es incomodidad, pues no contesten, esto es foros para personas que quieren ayudar a los demás.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ciclo For

Publicado por Antoni Masana (295 intervenciones) el 24/06/2010 20:13:07
Tienes razon, no funciona. Este si funciona. En el FOR no hace falta el DIR conn poner: FOR %%a IN (exp*.log) DO ... Ya funciona

@echo off
IF (%1) == (/@) goto Busca

DEL resexp.txt
FOR /F %%a IN ('dir /B exp*.log') DO CALL %0 /@ %%a
goto Fin

:Busca
FINDSTR /m "\<completed\>" %2 >nul
IF %errorlevel%==0 (
ECHO COMPLETADO %2 >> resexp.txt
) else (
ECHO FALLIDO %2 >> zz-resexp.txt
)

:Fin

El problema es que el comando FOR tiene bastantes fallos, todo y que han amplido las cosas que puede hacer.

En este caso el valor de %ErrorLevel% era el resultado del FOR y no del FindStr como se supondria esperar o peor aun del comando anterior al FOR.

Como esto es MS-DOS y Microsoft, los que lo conocemos ya sabemos de que pie cogea, osea de todos, pues a veces las cosas no son como se supondria que deberia de ser.

Y perdona pero esta mañana me lo he miraro rapido y me he equivocado por lo anteriormente dicho, que lo que tu suponias que deberia funcionar no funciona pero deberia.

Saludos desde Barcelona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ciclo For

Publicado por JM (8 intervenciones) el 25/06/2010 01:38:45
Muchas Gracias Antoni, voy a probarlo y te comento como me fue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ciclo For

Publicado por Jose B (1 intervención) el 19/07/2013 21:47:43
Muy buenas tardes, Hola amigos necesito un favor de ustedes debido a que dentro de un directorio debo buscar todos los archivos y re nombrarlos con un consecutivo en especifico que el usuario debe asignarlo adjunto el codigo que llevo pero realmente a un no funciona la parte de incrementar la variable.
REM **BUSCANDO ARCHIVOS Y RENOMBRANDOLOS**
SET /P x=DIGITE EL CONSCUTIVO :

CD C:\Documents and Settings
FOR %%A in (*.TXT) do RENAME "%%A" "EXITO set /a x= (%x "+" 1).TXT"

y quería saber si existe una instrucción para que siempre quede el valor de esa variable "x", y no toque pedirla si no que la guarde y se actualice cada vez que ejecute el arcivo .bat.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar