Ms-Dos - Si es 1 del mes ejecuta un proceso batch, sino otro

 
Vista:

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por MercaderFenicio (4 intervenciones) el 18/01/2017 16:53:41
Estimados.

Tenemos varios procesos batch nocturnos que zipean o copian ciertos archivos.
Ahora necesitamos que esos procesos identifiquen que es 1° de mes para que realicen otra tarea o rutina.
Para poder separar los procesos diarios de los mensuales.
Lo mismo necesitamos para los semanales, que en este caso puede identificar que es sábado.
Aguardo ayuda y comentarios.

Gracias y saludos.
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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por Antoni Masana (811 intervenciones) el 24/01/2017 12:00:30
Buenos días:

Una cuestión importante:

Supongo que trabajas con Windows ¿Que versión tienes? ¿Como y cuando se debe ejecutar este proceso?

En función de las necesidades se podría aprovechar las herramientas de Windows, por ejemplo el programador de tareas te solventa estos problemas.

Vale que hay versiones mejores que otras pero el programador de tareas del Win 7 esta mucho mejor que Win XP.

Ya diras alguna cosa si necesitas más ayuda.

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

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por MercaderFenicio (4 intervenciones) el 24/01/2017 13:16:51
Hola. Las versiones de Windows que utilizamos en estos procesos son WinXP-Pro, Win 2003 Server y Win TSE.
Las tareas programadas son una opción, las cuales programamos, pero la que debe ejecutar el 1 de cada mes, queda solapada
con la ejecución normal y eso hace que se ejecuten 2 procesos...
Lo que estoy viendo como opción es incorporar un IF en los batch/scripts que verifiquen si un archivo, por ejemplo: Control.txt, existe.
Si existe abortar el batch y notificarlo. Si no existe avanzar con el proceso, y que ahí verifique si es 01 del mes, si es 01 del mes, que haga "una cosa", y si no es 01 del mes que haga "otra cosa".
Creo que por este camino, soluciono en parte o todo el tema...
Que le parece...???

Gracias y 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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por Antoni Masana (811 intervenciones) el 25/01/2017 07:29:32
Hola,

Como no se que haces ni como lo haces poco te puedo aconsejar sobre cosas concretas pero si unas ideas generales.

Cuidado con las marcas de control ( Control.txt ) en crearlas y borrarlas adecuadamente, por que una marca perdida puede causar problemas.

Puedes lanzar dos procesos y hacer lo siguiente:
- El primero pone una marca y se ejecuta. Al finalizar borra la marca
- El segundo mira si hay la marca y puede hacer dos cosas CANCELAR si no tiene que hacer o ESPERAR a que se borre la marca para ejecutarse y no solaparse.

Otro Tema: la FECHA.
El formato de la fecha esta condicionado al formato de Windows y los días del 1 al 9 pueden no tener el CERO delante.

Si al programador de tareas le puedes decir ejecuta un BAT el día 1 de cada mes puedes llamar la BAT con un parámetro diciendole que es mensual:

C:\PROCESO.BAT /M

Y así el BAT no tiene que verificar si es día 1.

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

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por MercaderFenicio (4 intervenciones) el 25/01/2017 12:29:41
Estimado.
No me queda claro el parámetro /M que utiliza luego del batch (C:\PROCESO.BAT /M)...
No entiendo como llega al mismo o de donde lo obtiene... y con que información...
Aguardo sus comentarios y ejemplos...

Gracias y 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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por Antoni Masana (811 intervenciones) el 26/01/2017 08:17:46
Perdon por no explicarme con suficiente claridad.

Haber si consigo explicar la idea del /M.

Con el programador de tareas creas una tarea que se ejecute por ejemplo a la 22:00 mensualmente el día 1 y ejecutara un proceso BAT que para el ejemplo llamare C:/BAT/COPIAS.BAT y tendra un parametro que sera un /M.

Creas otra tarea que se ejecute por ejemplo a la 22:01 diariamente y ejecutara un proceso BAT que para el ejemplo llamare C:/BAT/COPIAS.BAT y no tendra parametros.

El BAT:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
if exist C:\tmp\Mensual.tmp goto :EOF
 
if "%1" == "/M"  goto Mensual
 
:diario
   ...         <-- Aqui va el proceso diario
   goto :EOF
 
:Mensual
   echo %date% - %Time% >C:\tmp\Mensual.tmp
   ...         <-- Aqui van el proceso mensual
   del C:\tmp\Mensual.tmp
   GOTO :EOF

La idea es que el BAT realice unas cosas diariamente y otras mensualmente y saber cuando es el día 1 para hacer estos últimos.
El dia 1 lo sabremos con el Programador de tareas que llama al bat pasándole un parámetro para decirle como debe comportarse y de paso evitar que se lancen dos BAT simultáneos.

Como funciona:

NOTA: El número corresponde a la línea.

02 - verifica si existe la marca de ejecución del proceso mensual
04 - Si ha recibido el parametro /M salta a hacer el proceso Mensual

06 - Etiqueta DIARIO
07 - Procesos diario
08 - Fin del BAT. también vale EXIT o GOTO :Fin i poner la etiqueta al final del BAT. la Opción GOTO:EOF no es valido en todas las versiones.

10 - Etiqueta MENSUAL.
11 - Crea un fichero de MARCA para que al llamar al BAT a las 22:01 detecte que se ejecuta el proceso mensual y finalice. Ver línea 2
12 - Procesos diario.
13 - Borra la MARCA.
14 - Fin del BAT. también vale EXIT o GOTO :Fin i poner la etiqueta al final del BAT. la Opción GOTO:EOF no es valido en todas las

Sigo sin tener claro si me he explicado bién pero si tienes duras preguntame y te lo aclaro.

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

Si es 1 del mes ejecuta un proceso batch, sino otro

Publicado por MercaderFenicio (4 intervenciones) el 26/01/2017 15:13:46
Estimado.

Tomo su explicación como opción... y la testearé...
Igualmente modifiqué un script que hace lo siguiente (también está en testeo):

Si existe el archivo de "control.txt" ejecuta paso1, sinó paso2
Si paso1 es fecha igual a 01 ejecuta proceso1, sinó proceso2
Si paso2 es fecha igual a 01 ejecuta proceso3, sinó proceso4

Que le parece...???
Aguardo sus comentarios.
Muchas gracias por la ayuda que me brinda y trasladar conocimientos.
Saludos cordiales.
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