Arquivo em lote que é executado em um dia especial

0

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?

    
por Martin 26.01.2014 / 20:27

3 respostas

4

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.

    
por 26.01.2014 / 20:36
1

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;)

    
por 27.01.2014 / 23:14
0

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.

  1. Primeiro, você precisará alterar PATH_TO_FILE na linha 7 para o caminho do executável que deseja lançar.
  2. Em segundo lugar, talvez seja necessário alterar 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 ).
por 27.01.2014 / 05:17