Hacer tarea programada con archivo .BAT que ejecuta winrar.

Tengo un archivo bat con dos lineas de comando de comprimen con Winrar unos archivos de Backup de Sql Server.

for %%d in (*.trn) do "C:\program files\WinRAR\RAR.exe" a -ag{_LOG} -ep1 -df %%~nd %%~fd
for %%d in (*.bak) do "C:\program files\WinRAR\RAR.exe" a -ag{_FULL} -ep1 -df %%~nd %%~fd

El problema es que si ejecuto el bat directamente lo hace perfectamente. Si lo programo por tares programada de windows y lo ejecuto, en su historial dice que lo ejecuto satisfactoriamente, pero en realidad no hizo nada. La cuenta con el que le digo que lo ejecute tiene permisos sobre la carpeta donde se encuentra el bat.

¿Quisiera saber por que no funciona?

1

1 Respuesta

86.750 pts. Experiencia en manejo de bases de datos Oracle,...
Ahora no tengo mucho tiempo pero para hacer algunas pruebas pero por si acaso te comentaré una experiencia reciente que tal vez te pueda ayudar. Resulta que si programas la tarea con el comando AT y trabajas con Windows XP resulta que el formato de la fecha que se obtiene no es el esperado, en particular es un formato distinto al que se obtiene ejecutando el BAT directamente. Con Windows7 no hay esta diferencia. Cuando pueda probaré sobre tu ejemplo, pero mientras tal vez te ayude esto.

A ver si ahora puedo leer lo que escribo antes de enviarlo y a ver si no me mete "tags" en el texto, que es algo que no acabo de controlar.
He intentado reproducir, más o menos, lo que pretendes pero hay cosas que no me cuadran. No tengo gran experiencia con las opciones del RAR.EXE y tampoco sé si la versión con la que trabajamos es similar o muy diferente. Para las opciones que usas esto es lo que me dice la ayuda del RAR:
A Añadir ficheros al archivo
-ag[formato] Generar nombre de archivo usando la fecha actual
-Ep1 Excluir el directorio raíz de los nombres
-Df Eliminar ficheros tras la compresión
y los modificadores de la variable: ~n para recuperar el nombre del archivo y ~f para recuperar la ruta.
Pues bien lo que obtengo es una colección de archivos con extensión "rar", uno por cada archivo con extensión "trn" (para el primer comando). Por ejemplo, si tengo el archivo kkk.trn obtengo el kkk{_LOG}.rar. ¿Es eso lo que pretendes o que te incluya todos los "trn" en un único archivo RAR?
Me sorprende que la fecha no aparezca por ningún lado como se esperaría por la opción -ag.
Dime si voy bien encaminado y, de paso, con que versión de Windows estás probando.
Saludos,
GGG

<div id="_dyhb23rg4374"> </div>

Gracias por responder... Es correcto vas bien! Los archivos son de extensión trn de los logs y bak de respaldos full de las bases de datos. Cuando estos archivos se generan ya vienen con la hora y fecha por lo que cada archivo es diferente. Mi objetivo con el bat es comprimir esos archivos automáticamente porque son muy grandes y comprimidos se reducen hasta un 85%. Con la linea de comando ademas de la compresión pretendo agregar al nombre del archivo rar generado, la palabra FULL y LOG para diferenciar los archivos pues sus extensiones no se agregan al nombre del archivo rar generado. La ejecución directa del bat como te mencione si funciona. Se ve que levanta la pantalla de consola y ademas levanta la aplicancion winrar comprimiendo los archivos. En el servidos donde se realiza esta tarea tiene un OS Windows 2008 R2 server, le programo la tarea, lo calendarizo, le selecciono el bat a ejecutar y lo pruebo dándole Run pero nada, no se levanto ni la pantalla de comando ni el de rar,, reviso el historial y no hay errores, solo que lo ejecuto satisfactoriamente. Ese es el caso...

Ahora ya he tenido más tiempo para probar y, un poco en la línea de mi primera respuesta, he visto que si se programa con el comando AT, en Windows XP no hace lo que debía hacer, pero no indica que se haya producido ningún error (en la pantalla de tareas programadas queda registrada la hora de última ejecución, con "Último resultado" 0x0 y Creador SYSTEM). Sin embargo si se programa desde la propia pantalla de Tareas Programadas funciona correctamente, aunque en ese caso el Creador no es SYSTEM sino mi usuario.
He probado en Windows7 y el problema es que si la programo con el comando AT no sé donde se indica el directorio de trabajo. Si la programo desde el programador de tareas en "Acciones" si que hay un campo, opcional, para "Iniciar en" y por ese camino funciona correctamente.
Intuyo que ese puede ser el problema.
Ya me dirás.

No leí tu respuesta porque estaba redactando la última mía.

Ahora que la he leído me ratifico en que el problema podría ser la forma de indicar en el programador de tareas del servidor el directorio/carpeta de trabajo, es decir, en el que se encuentran los archivos "trn" y los archivos "bak". Creo que en cuanto localices la opción y le rellenes el valor correcto funcionará. Cuando lo haces manualmente funciona bien porque tienes la ventana de comando (o de consola) situada en el directorio de trabajo, pero el programador de tareas no tendrá, por defecto, ese directorio.

También podrías incorporar al bat unos comandos de ubicación, algo como

d:

cd \carpeta

Creo que acabaremos consiguiendo que funcione.

Muchas gracias gggirald. Diste con la solución! Ya me funciona agregándole la ubicación de la carpeta. Demasiado tu aporte, gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas