Archivo por lotes que se ejecuta en un día especial

Archivo por lotes que se ejecuta en un día especial

¿Cómo creo un archivo por lotes que, una vez que se hace clic en él, inicia un archivo .exe si es domingo?

No quiero que ejecute el archivo .exe si es otro día. Si, por ejemplo, es viernes, solo quiero que se cierre solo y no haga nada.

También sería bueno si fuera posible ejecutarlo en segundo plano sin mostrar ningún tipo de símbolo del sistema.

Respuesta1

Puedes utilizar Task Schedulerpara este propósito. Abrir Task Scheduler > Create Task Ahora puede definir las propiedades, las condiciones para ejecutar la tarea y qué trabajo/aplicación ejecutar en el cuadro de diálogo abierto.

Programador de tareas

Respuesta2

El hecho es que desea utilizar una función avanzada de datecomando (Día de la semana) que Windows no puede administrar en DOS Batch.

Para esto, usaría un archivo binario de terceros date.exe, que proviene del mundo Unix y que funciona en Windows:UnxUtils(Es una colección de utilidades comunes de GNU Unix que se ejecutan en Windows).

Descárgalo desdeaquí(UnxUtils.zip).

Luego extráigalo y elimine todos los archivos exceptodate.exe

Luego, escriba un archivo por lotes como este (suponiendo que date.exeesté ubicado en c:\):

@ECHO OFF
REM Sunday is 0
for /f "delims=" %%a in ('c:\date.exe +%%w') do set DayOfWeek=%%a
if %DayOfWeek% == 0 (
  cmd /c c:\path\to\exe\file.exe
) else (
  echo Do Nothing
)

Puede colocarlo en la carpeta de inicio de Windows y funcionará en todas las versiones de Windows, independientemente de en qué parte del mundo se encuentre.


También(mucho mejor), en esos días, DOS Batch está un poco obsoleto. Como estás hablando de Windows 8, consideraría Powershell (se puede llamar mediante un archivo por lotes si es necesario):

$a = Get-Date
if($a.DayOfWeek -eq "Sunday") {
    cmd /c c:\path\to\exe\file.exe
}

Aquí, no se necesita un archivo binario de terceros: Powershell es poderoso;)

Respuesta3

De acuerdo aAQUÍ, es imposible ejecutar un archivo por lotes con el símbolo del sistema integrado y no mostrar una ventana.

Entonces, finalmente, aterricé enESTEpágina y utilizó la información para crear un archivo por lotes que hará lo que usted desea. Lo que hará el script por lotes es comprobar la hora. Si no es el día correcto, el símbolo del sistema parpadeará en rojo y saldrá. Si es el día correcto, parpadeará en verde e iniciará su programa mientras sale.

Todo lo descrito en el párrafo anterior sucede en menos de un segundo (dependiendo de la velocidad de su computadora) y, por lo tanto, no se notará mucho.

@echo off

mode con: cols=16 lines=6

:: The file you want to launch.
set FILE=PATH_TO_FILE

:: The day you want to launch the file on.
set DAY=Sun

for /F "tokens=1 delims= " %%A in ('Date /t') do ( Set TODAY=%%A )
if %TODAY% == %DAY% goto START

:STOP
color 47
goto END

:START
color 27

start "" "%FILE%"
goto END

:END
exit

Deberá cambiar dos cosas en el archivo por lotes para asegurarse de que se ajuste a sus necesidades.

  1. Primero, deberá cambiar PATH_TO_FILEen la línea 7 a la ruta del ejecutable que desea iniciar.
  2. En segundo lugar, es posible que deba cambiar Sunla línea 10. Es posible que deba cambiar esto a las primeras 3 letras del día en el que desea iniciar el ejecutable (si no desea iniciarlo el domingo).

información relacionada