Você pode usar Task Scheduler
para essa finalidade. Abra Task Scheduler > Create Task
Agora você pode definir as propriedades, condições para executar a tarefa e qual tarefa / aplicativo executar, na caixa de diálogo aberta.
Como faço para criar um arquivo em lotes que, uma vez clicado, inicia um arquivo .exe se for um domingo?
Eu não quero que ele execute o arquivo .exe se estiver em outro dia. Se, por exemplo, é sexta-feira, quero apenas que se feche e não faça nada.
Também seria legal se fosse possível executá-lo em segundo plano sem mostrar nenhum tipo de prompt de comando?
Você pode usar Task Scheduler
para essa finalidade. Abra Task Scheduler > Create Task
Agora você pode definir as propriedades, condições para executar a tarefa e qual tarefa / aplicativo executar, na caixa de diálogo aberta.
O fato é que você deseja usar um recurso avançado do comando date
(Day Of Week) que o Windows não consegue gerenciar no DOS Batch.
Para isso, eu usaria um arquivo binário de terceiros date.exe
, que vem do mundo Unix e que funciona no Windows: UnxUtils (que é uma coleção de utilitários GNU Unix comuns que são executados no Windows).
Faça o download de aqui (UnxUtils.zip).
Em seguida, extraia-o e exclua todos os arquivos, exceto date.exe
Em seguida, escreva um arquivo em lote como este (supondo que date.exe
esteja localizado em 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
)
Você pode colocá-lo na pasta de inicialização do Windows e trabalhar em todas as versões do Windows, independentemente de onde você estiver no mundo.
Também (muito melhor) , naqueles dias, o DOS Batch é um pouco obsoleto. Como você está falando sobre o Windows 8 eu consideraria Powershell (pode ser chamado por um arquivo de lote, se necessário):
$a = Get-Date
if($a.DayOfWeek -eq "Sunday") {
cmd /c c:\path\to\exe\file.exe
}
Aqui, não há necessidade de arquivo binário de terceiros: Powershell é Powerfull;)
De acordo com AQUI , é impossível executar um arquivo em lotes com o Prompt de Comando incorporado e não mostrar uma janela.
Então, finalmente, acessei a ESTA página e usei a informações para fazer um arquivo de lote que fará o que você quer. O que o script em lote fará é verificar a hora. Se não for o dia correto, o prompt de comando piscará em vermelho e sairá. Se for o dia correto, ele piscará em verde e iniciará seu programa ao sair.
Todas as coisas no parágrafo acima acontecem em menos de um segundo (dependendo da velocidade do seu computador) e, portanto, não serão muito perceptíveis.
@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
Você precisará alterar duas coisas no arquivo em lote, para garantir que ele atenda às suas necessidades.
PATH_TO_FILE
na linha 7 para o caminho do executável que deseja lançar. Sun
na linha 10. Talvez seja necessário alterá-lo para as três primeiras letras do dia em que você deseja iniciar o executável (se não quiser iniciá-lo no domingo ).