Como faço para criar um arquivo em lote que, uma vez clicado, inicia um arquivo .exe se for domingo?
Não quero que ele execute o arquivo .exe se for em outro dia. Se, por exemplo, for sexta-feira, só quero que ele feche sozinho e não faça nada.
Também seria bom se fosse possível executá-lo em segundo plano sem mostrar nenhum tipo de prompt de comando?
Responder1
Você pode usar Task Scheduler
para esse fim. Abrir Task Scheduler > Create Task
Agora você pode definir as propriedades, as condições para executar a tarefa e qual trabalho/aplicativo executar na caixa de diálogo aberta.
Responder2
O fato é que você deseja usar um recurso avançado de date
comando (Dia da semana) 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 rodam no Windows).
Baixe emaqui(UnxUtils.zip).
Em seguida, extraia-o e exclua todos os arquivos, excetodate.exe
Em seguida, escreva um arquivo em lote como este (assumindo 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 funcionará em todas as versões do Windows, independentemente de onde você estiver no mundo.
Também(muito melhor), naquela época, o DOS Batch estava um pouco obsoleto. Como você está falando sobre o Windows 8, eu consideraria o Powershell (pode ser chamado por um arquivo em 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 é poderoso;)
Responder3
De acordo comAQUI, é impossível executar um arquivo em lote com o prompt de comando integrado e não mostrar uma janela.
Então, eventualmente, eu pousei emESSEpágina e usei as informações para criar um arquivo em lote que fará o que você deseja. 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 do 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 ter certeza de que ele atende às suas necessidades.
- Primeiro, você precisará alterar
PATH_TO_FILE
na linha 7 o caminho do executável que deseja iniciar. - Em segundo lugar, pode ser necessário alterar
Sun
a linha 10. Pode ser necessário alterar para as três primeiras letras do dia em que você deseja iniciar o executável (se não quiser iniciá-lo no domingo).