Ayuda uso de find en proceso batch

Buenas tardes, me encuentro armando un proceso batch que se ejecute vía task scheduled de backup de una base de exchange, la cual si da ok el backup pasaría a realizar un borrado de logs en una carpeta especificada, mi pregunta es la siguiente, quiero utilizar algo como el errorlevel en caso de que de ok, en el log del scheduled figura lo siguiente:
"ClusterDiario.job" (ntbackup.exe)
Finished 15/08/2011 05:01:50 a.m.
Result: The task completed with an exit code of (0).
Necesitaría aplicar un find para incluir toda esta información (salvo la fecha y hora) y que a partir de ahi si los datos son correctos (utilizando errorlevel) ejecute un archivo .bat el cual realizará un borrado de logs.
Es posible agregar todos estos datos en la misma sintaxis de find? En caso de que no se pueda, cómo puedo solucionarlo de forma práctica?, desde ya muchas gracias.
Respuesta
-1
Primero intentaré ver si te he entendido bien.
Si pretendes tratar dentro de un archivo BAT (o CMD) el código de retorno de un programa, el programa mismo debe lanzarse desde el BAT. Además para capturar el valor del ERRORLEVEL retornado por el programa debe hacerse en la primera instrucción ejecutada tras el retorno. Esto es así porque cualquier comando tiene su propio valor de retorno que reescribiría el ERRORLEVEL.
Por tanto está claro que lo primero que habría que hacer es tratar el ERRORLEVEL, bien para tomar decisiones según sea su valor o bien para almacenarlo en una variable interna.
Lo siguiente sería examinar el archivo de log del programa para tomar decisiones según esté presente o no alguna cadena determinada. En este punto no tengo claro si deben encontrarse las dos cadenas de la primera y tercera línea del texto que copias (parece que la de la fecha y hora no hay que revisarla). ¿No basta con la última para dar por buena la ejecución?
Para tratar dos cadenas consecutivamente podría buscarse primero una de ellas y, si se encuentra, buscar luego la otra. Este podría ser un BAT de ejemplo:
-------------------------------------------------------
@echo off
xcopy /S /I d:\bat d:\tmp\bat > nul
if errorlevel 1 goto :errorA
findstr /C:"\"ClusterDiario.job\" (ntbackup.exe)" d:\bat\log.txt > nul
if errorlevel 1 goto :errorB
findstr /C:"Result: The task completed with an exit code of (0)." d:\bat\log.txt > nul
if errorlevel 1 goto :errorC
echo Ha ido todo bien. Hacer el borrado
rem del d:\bat\log.txt
goto :fin
:errorA
echo El programa ha terminado con error
goto :fin
:errorB
echo El programa termino sin error pero no esta la primera cadena
goto :fin
:errorC
echo El programa termino sin error pero no esta la segunda cadena
goto :fin
:Fin
-----------------------------------------------------
He usado el comando XCOPY para simular el programa que se quiere controlar y he generado manualmente el archivo d:\bat\log.txt para manipularlo y forzar que existan o no las cadenas buscadas. El supuesto borrado está comentado (rem del d:\bat\log.txt) para que no me borre el log.txt mientras se hacen las pruebas.
Sobre este ejemplo creo que podríamos trabajar.
Saludos,
GGG
¿Has leído mi mensaje anterior con el ejemplo que te facilitaba o ya has resuelto el problema y ha dejado de interesarte el asunto?
Saludos,
GGG

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas