Batch para Comparar fecha y horas

Estoy interesado en un batch para comparar fechas, y por otro lado, también un batch para comparar horarios, por ej me gustaría saber si mi hora actual es menor que 17:00 hs por ej, en ese caso que dé un mensaje "es temprano " o sino si es mayor a 17:00 que diga "ya es demasiado tarde", como para citar un ej simple.

1 Respuesta

Respuesta
1

Te dejo por aquí un bat de ejemplo con comparación de fechas y horas. Pide la fecha y hora a comparar y la compara con la fecha y hora actual. Se basa en trabajar la fecha en formato AAAAMMDD y la hora en formato HHMI. Si se quisiera trabajar externamente con otros formatos habría que convertirlos, internamente, a estos formatos.

@echo off
set aaaa=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%
:bucle
set hh=%time:~0,2%
set mi=%time:~3,2%
set /p mifecha=Teclea la fecha en formato AAAAMMDD:
set /p mihora=Teclea la hora en formato HHMI:
if %mifecha% gtr %aaaa%%mm%%dd% (echo la fecha tecleada es mayor que la fecha actual
   ) else echo la fecha tecleada es menor o igual que la fecha actual
if %mihora% gtr %hh%%mi% (echo la hora tecleada es mayor que la hora actual
   ) else echo la hora tecleada es menor o igual que la hora actual
echo para terminar pulsa Ctrl+C
pause
goto :bucle

¿Qué pasó con esto? ¿Has probado el BAT?

Muchas gracias por tu tiempo. La verdad no he tenido tiempo de probarlo. Y sinceramente no me había dado cuenta que me había llegado la notificación de tu respuesta. En cuanto me reincorpore en estos días al trabajo sigo con las pruebas y te aviso. Nuevamente muchísimas gracias como siempre y feliz Navidad para vos y tu familia.

Excelente! para comparar funciona correcto. Ahora lo que he intentado es lo siguiente.

Tengo una carpeta llamada IMG que contiene 2 carpetas en su interior, una llamada DIA y la otra llamada NOCHE, lo que he intentado y no me funciona es que a partir desde las 06 am hasta las 19 hs pm, el contenido de la carpeta DIA debe copiarse a la carpeta IMG, y desde las 20 hs pm hasta las 05 am el contenido de la carpeta NOCHE debe copiarse a la carpeta IMG.

He intentado con las sentencia IF pero no logro comparar un horario con otro, es decir 

if %horaactual% GEQ 19:00 copy /Y C:\IMG\NOCHE\*.png C:\IMG

es lo que quiero, sé que el código está mal pero es una idea de lo que necesito.

Muchas gracias por tu ayuda

Tengo el ordenador dañado y no puedo trabajar con él. Ahora tengo que usar uno prestado en el que no puedo probar a fondo las cosas. Pero tal vez te pueda servir esto:

@echo off
set horaactual=%time:~0,2%%time:~3,2%
if %horaactual% geq 1900 (copy /Y C:\IMG\NOCHE\*.png C:\IMG
   ) else copy /Y C:\IMG\DIA\*.png C:\IMG

¡Muchísimas Gracias!, funciona como quería. La verdad que no entiendo cómo trabaja la variable %horaactual% es decir %time:~0,2% y %time:~3,2%. Era lo que me estaba faltando para definir el tiempo en este caso. Muchísimas gracias y te deseo de paso que tengas unas excelentes fiestas

Me alegro de que te funcione. Como daba a entender en mi primer BAT de este hilo el formato de la hora debía ser HHMM, sin separadores, para que se pueda tratar como un número y el GEQ del IF no tenga problemas. Por la misma razón he puesto 1900 y no 19:00. Por tanto la variable HORAACTUAL tiene que tener ese formato. %Time:~0,2% toma los dos primeros caracteres de la variable de entorno TIME, es decir la hora, y %time:~3,2% toma los caracteres cuarto (la numeración de los caracteres empieza en cero, por eso el 3 se refiere al cuarto) y quinto de esa misma variable, es decir los minutos. Al unirlos para formar el valor de la variable HORAACTUAL tenemos lo que se quería.

¡Ah! Y felices fiestas también para ti.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas