Ayuda con programa batch
Quisiera saber si me podría ayudar es que lo que pasa que quiero programar un batch que conste de lo siguiente
*quiero que el batch que progrme un aplciacion que se ejecute cada 30 dias y al inicion de windows.. Pero no e logrado hacerlo me prodrias ayudar con codigo.
*quiero que el batch que progrme un aplciacion que se ejecute cada 30 dias y al inicion de windows.. Pero no e logrado hacerlo me prodrias ayudar con codigo.
1 respuesta
Respuesta de gggirald
1
1
gggirald, Experiencia en manejo de bases de datos Oracle, programación en...
Si quisieras que se ejecutara cada 30 días podrías utilizar la facilidad de las tareas programadas de Windows (Programas/Accesorios/Herramientas del sistema/Tareas programadas), utilizando la opción "Programar tarea" y en ella "Mensualmente" (si lo de los 30 días no tiene que ser exacto) o "Programar la tarea diariamente" y marcando "30" en la casilla "Cada", pero esto no te asegura que sea al iniciar Windows sino que tendrías que indicar, también, la hora de inicio. Además solo se ejecuta si el ordenador está arrancado.
Si es fundamental que se ejecute al iniciar Windows tendrías que meter el batch en la carpeta de Inicio de Windows. El problema sería, entonces, controlar que se han cumplido los 30 días desde la anterior ejecución para lo cual habría que hacer dos cosas, dejar una marca con la fecha de la ejecución anterior y leer la marca para comprobar si se han cumplido los 30 días. Tendría que hacer alguna prueba para ver como hacer esta segunda cosa. Si te interesa el enfoque dímelo e intentaré desarrollarlo más concretamente.
Saludos,
GGG
Si es fundamental que se ejecute al iniciar Windows tendrías que meter el batch en la carpeta de Inicio de Windows. El problema sería, entonces, controlar que se han cumplido los 30 días desde la anterior ejecución para lo cual habría que hacer dos cosas, dejar una marca con la fecha de la ejecución anterior y leer la marca para comprobar si se han cumplido los 30 días. Tendría que hacer alguna prueba para ver como hacer esta segunda cosa. Si te interesa el enfoque dímelo e intentaré desarrollarlo más concretamente.
Saludos,
GGG
Primero que nada gracias por tu respuesta y si pudieras ayudarme con a segunda opción que me dices de validar que se allá cumplido los 30 días, porque lo e intentado que con tareas programadas pero es indispensable que ser inicie con windows y cada 30 días me podrías ayudar con el código gracias de antemano
Me pondré con ello pero no te aseguro que lo vaya a resolver muy rápido porque hace bastante tiempo que no practico este tipo de cosas (aunque me gusta bastante). Ten un poco de paciencia que creo que acabará saliendo.
Saludos,
GGG
Saludos,
GGG
Al final, con la valiosa ayuda de Google y de algún verdadero experto en este tipo de programación encontrado en la red (como José Manuel Tella Llop autor de la rutina para calcular el tiempo transcurrido), no tuve que trabajar mucho. Este es el resultado:
@echo off
rem Rutina de calculo obtenida de http://multingles.net/docs/jmt/difecha.htm.
rem Agradecimientos a José Manuel Tella Llop ([email protected])
for /f "eol=; tokens=1* delims=: " %%i in (FECHA.TXT) do set ANT=%%i
call :dias %ANT%
set /a d=j
call :dias %DATE%
set /a d=j-d
if /i %d% LSS 30 echo No han pasado 30 dias %d% & goto :EOF
echo Han pasado 30 dias o mas %d%
date /t > FECHA.TXT
:dias
for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
set dd=%%a&set mm=%%b&set aa=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=aa+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
goto :EOF
Si copias lo anterior a un BAT verás que si en el archivo FECHA.TXT tienes una fecha de hace 30 días o más se ejecuta el "echo Han pasado 30 días o más %d%" y guarda la fecha actual en ese archivo mientras que si la fecha guardada es de hace menos de 30 días se ejecuta el "echo No han pasado 30 días %d%" y no se guarda la fecha.
Basta con que pongas lo que quieres ejecutar en la parte adecuada y ya está.
Si tienes alguna duda ya sabes donde estamos.
Y te recomiendo vivamente la página de José Manuel Tella (no la conocía antes pero me parece un gran descubrimiento): http://www.multingles.net/docs/jmt/comandos/comandos.html
Saludos,
GGG
@echo off
rem Rutina de calculo obtenida de http://multingles.net/docs/jmt/difecha.htm.
rem Agradecimientos a José Manuel Tella Llop ([email protected])
for /f "eol=; tokens=1* delims=: " %%i in (FECHA.TXT) do set ANT=%%i
call :dias %ANT%
set /a d=j
call :dias %DATE%
set /a d=j-d
if /i %d% LSS 30 echo No han pasado 30 dias %d% & goto :EOF
echo Han pasado 30 dias o mas %d%
date /t > FECHA.TXT
:dias
for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
set dd=%%a&set mm=%%b&set aa=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=aa+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
goto :EOF
Si copias lo anterior a un BAT verás que si en el archivo FECHA.TXT tienes una fecha de hace 30 días o más se ejecuta el "echo Han pasado 30 días o más %d%" y guarda la fecha actual en ese archivo mientras que si la fecha guardada es de hace menos de 30 días se ejecuta el "echo No han pasado 30 días %d%" y no se guarda la fecha.
Basta con que pongas lo que quieres ejecutar en la parte adecuada y ya está.
Si tienes alguna duda ya sabes donde estamos.
Y te recomiendo vivamente la página de José Manuel Tella (no la conocía antes pero me parece un gran descubrimiento): http://www.multingles.net/docs/jmt/comandos/comandos.html
Saludos,
GGG
Ok gracias más o menos le entiendo al condigo je je y donde puedo agregar el código para indicar que se ejecute el archivo en que parte de ese scprit que me enviaste. ¿Y estas segura que se ejecutara cada 30 días a inicio de sesión de windows?
Antes de nada debo decirte que este código no funcionará con versiones bastante antiguas de Windows (Windows 95 o Windows 98). Debe funcionar con
Windows 2000, Millenium, XP o Vista.
No sé si has hecho alguna prueba pero voy a suponer que no. Voy a ser, tal vez, demasiado minucioso y puede que alguna de las cosas que voy a decir sean innecesarias. En primer lugar debes copiar todo el código (desde "@echo off" hasta "goto :EOF") en el bloc de notas y salvarlo con un nombre, por ejemplo PRUEBA.BAT. Luego abres una ventana de comando (por ejemplo Inicio/Ejecutar y escribes CMD). Te sitúas en la carpeta donde guardaste PRUEBA.BAT y tecleas PRUEBA. Como es la primera vez y no existe el archivo FECHA.TXT te saldrá algo así:
El sistema no puede encontrar el archivo FECHA.TXT.
Han pasado 30 días o más 733993
Comprueba que ha creado en esa misma carpeta un archivo FECHA.TXT que contiene la fecha actual.
Te sugiero que hagas pruebas editando el archivo FECHA.TXT. Este archivo contiene la fecha de la última ejecución del BAT. Puedes ponerle distintos valores de fecha para comprobar si se ejecuta la parte que dice "Han pasado 30 días o más" o la parte que dice "No han pasado 30 días". Tal como está, añade, además, el número de días que han pasado desde la fecha registrada en el archivo FECHA.TXT. Si cambias la fecha de ese archivo podrás conseguir simular la fecha de la última ejecución. Pero tienes que tener en cuenta que si entra en la parte de "Han pasado 30 días..." generará, automáticamente, un fichero FECHA.TXT con la fecha actual. En ese caso, si quieres seguir probando, tendrás que volver a cambiar la fecha grabada dentro de ese archivo.
El código que quieres que se ejecute tienes que ponerlo en lugar de:
Echo Han pasado 30 días o más %d%
date /t > FECHA.TXT
Si es un ejecutable que ya no va a devolver el control al BAT deberás poner en primer lugar el "date /t > FECHA.TXT" porque está parte del código es la que va a registrar la fecha de última ejecución. También tienes que asegurarte de que no se borre nunca el FECHA.TXT, que estará en la misma carpeta que el BAT.
Para que se ejecute al inicio de Windows tienes que incluir en la carpeta "Inicio" de Windows (Inicio\Programas\Inicio) un acceso directo a este BAT. Para crear un acceso directo al BAT (perdona si peco de minucioso) puedes hacerlo desde el Explorador de Windows, marcando el PRUEBA.BAT, pulsando el botón izquierdo y eligiendo "Crear acceso directo". Esto te creará el acceso directo en la misma carpeta donde está PRUEBA.BAT y luego tendrás que copiarlo en la carpeta de Inicio (si tu disco principal se llama C: estará en C:\Documents and Settings\"usuario"\Menú Inicio\Programas\Inicio, donde "usuario" es tu nombre de usuario).
Espero que con esto sea suficiente, pero si no fuera así dímelo e intentaré ser más concreto, aunque tal vez tendrías que decirme con que sistema operativo trabajas y todo lo que pueda ayudar a concretar.
Saludos,
GGG
Windows 2000, Millenium, XP o Vista.
No sé si has hecho alguna prueba pero voy a suponer que no. Voy a ser, tal vez, demasiado minucioso y puede que alguna de las cosas que voy a decir sean innecesarias. En primer lugar debes copiar todo el código (desde "@echo off" hasta "goto :EOF") en el bloc de notas y salvarlo con un nombre, por ejemplo PRUEBA.BAT. Luego abres una ventana de comando (por ejemplo Inicio/Ejecutar y escribes CMD). Te sitúas en la carpeta donde guardaste PRUEBA.BAT y tecleas PRUEBA. Como es la primera vez y no existe el archivo FECHA.TXT te saldrá algo así:
El sistema no puede encontrar el archivo FECHA.TXT.
Han pasado 30 días o más 733993
Comprueba que ha creado en esa misma carpeta un archivo FECHA.TXT que contiene la fecha actual.
Te sugiero que hagas pruebas editando el archivo FECHA.TXT. Este archivo contiene la fecha de la última ejecución del BAT. Puedes ponerle distintos valores de fecha para comprobar si se ejecuta la parte que dice "Han pasado 30 días o más" o la parte que dice "No han pasado 30 días". Tal como está, añade, además, el número de días que han pasado desde la fecha registrada en el archivo FECHA.TXT. Si cambias la fecha de ese archivo podrás conseguir simular la fecha de la última ejecución. Pero tienes que tener en cuenta que si entra en la parte de "Han pasado 30 días..." generará, automáticamente, un fichero FECHA.TXT con la fecha actual. En ese caso, si quieres seguir probando, tendrás que volver a cambiar la fecha grabada dentro de ese archivo.
El código que quieres que se ejecute tienes que ponerlo en lugar de:
Echo Han pasado 30 días o más %d%
date /t > FECHA.TXT
Si es un ejecutable que ya no va a devolver el control al BAT deberás poner en primer lugar el "date /t > FECHA.TXT" porque está parte del código es la que va a registrar la fecha de última ejecución. También tienes que asegurarte de que no se borre nunca el FECHA.TXT, que estará en la misma carpeta que el BAT.
Para que se ejecute al inicio de Windows tienes que incluir en la carpeta "Inicio" de Windows (Inicio\Programas\Inicio) un acceso directo a este BAT. Para crear un acceso directo al BAT (perdona si peco de minucioso) puedes hacerlo desde el Explorador de Windows, marcando el PRUEBA.BAT, pulsando el botón izquierdo y eligiendo "Crear acceso directo". Esto te creará el acceso directo en la misma carpeta donde está PRUEBA.BAT y luego tendrás que copiarlo en la carpeta de Inicio (si tu disco principal se llama C: estará en C:\Documents and Settings\"usuario"\Menú Inicio\Programas\Inicio, donde "usuario" es tu nombre de usuario).
Espero que con esto sea suficiente, pero si no fuera así dímelo e intentaré ser más concreto, aunque tal vez tendrías que decirme con que sistema operativo trabajas y todo lo que pueda ayudar a concretar.
Saludos,
GGG
- Compartir respuesta
- Anónimo
ahora mismo