The IF command matches all characters, including the quotes -
Thu
does not match"Thu"
.So either of the following will work:
if %RDAY%==Thu ... if "%RDAY%=="Thu" ...
EDITAR Acabei de perceber que você adicionou aspas ao valor quando definiu o RDAY. Então, minha sugestão acima em amarelo não é totalmente correta. Eu prefiro usar set "RDAY=%date:~0,3%"
, que não adiciona aspas ao valor. Mas isso é mais uma questão de estilo.
Então presumivelmente sua declaração IF nunca é verdadeira porque sua máquina usa um formato diferente para o valor %DATE%
que não começa com a abreviação do dia da semana
Mas há outros problemas com seu script:
Apenas sua linha de log é condicional, o script de quinta-feira será executado todos os dias. Isso é facilmente corrigido adicionando parênteses ao seu bloco IF
if %DATE:~0,3%==Thu (
echo "Starting Weekly Matching" >> %LOGFILE%
D:\New_Folder\SCRIPTTEST\Runthursday.bat
)
O formato do valor %DATE%
é dependente de localidade. Seu script provavelmente não funcionará em outra máquina. Você pode usar o WMIC para determinar facilmente se é quinta-feira de uma maneira agnóstica local:
wmic path win32_localtime get dayofweek | findstr 4 >nul && (
echo "Starting Weekly Matching" >> %LOGFILE%
D:\New_Folder\SCRIPTTEST\Runthursday.bat
)
Mas tenho uma pergunta para você - Por que você está agendando um trabalho em lote diário que executa outro lote apenas na quinta-feira? Se você deseja executar um trabalho em lotes às quintas-feiras, use o Agendador de Tarefas do Windows para fazer exatamente isso. Não há necessidade de determinar se hoje é quinta-feira em seu script em lote, deixe o agendador fazer o trabalho.