Arquivo em lote executado em um dia especial

Arquivo em lote executado em um dia especial

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 Schedulerpara 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.

Agendador de tarefas

Responder2

O fato é que você deseja usar um recurso avançado de datecomando (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.exeesteja 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.

  1. Primeiro, você precisará alterar PATH_TO_FILEna linha 7 o caminho do executável que deseja iniciar.
  2. Em segundo lugar, pode ser necessário alterar Suna 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).

informação relacionada