¿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 Scheduler
para 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.
Respuesta2
El hecho es que desea utilizar una función avanzada de date
comando (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.exe
esté 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.
- Primero, deberá cambiar
PATH_TO_FILE
en la línea 7 a la ruta del ejecutable que desea iniciar. - En segundo lugar, es posible que deba cambiar
Sun
la 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).