Você pode configurar um acionador na tarefa agendada para executar At log on
e executar como Specific User
, de modo que sim, isso significa que você acionará a tarefa para ser executada a cada logon para esse usuário específico .
Você pode adicionar lógica condicional para verificar algumas condições e, com base nessas condições e na lógica, é possível garantir que ela só será executada se o dia for segunda-feira ou, opcionalmente, você pode executar somente uma vez, se o dia for segunda-feira , verificando se ele ainda não foi executado para uma data <YYYYMMDD>
específica.
Executar para usuário específico a cada login na segunda-feira
Essentially this will:
- Stop running if the day is not Monday (you don't want it to run on other days)
O script
Observação: Após a lógica IF NOT [%DAY%]==[Mon] EXIT
, você pode colocar lógica de lote adicional ou até mesmo Iniciar ou Ligue para um processo externo, como um arquivo executável, etc.
@ECHO ON
SET DAY=%DATE:~0,3%
IF NOT [%DAY%]==[Mon] EXIT
<The rest of your batch logic below >
<Or you can CALL or START EXEs >
<Scooby wanna scoobie snack >
EXIT
Bônus: execute somente uma vez quando for segunda-feira para um usuário específico
Essentially this will (in the specific order):
- Stop running if the day is not Monday (you don't want it to run on other days)
- Stop running if the day is Monday and if a lock file exists (see #3)
- both conditions in #2 must be true
- Create a
<YYYYMMDD>
named lock file if the day is Monday and the file doesn't exist already- If it makes it to #3 and creates the lock file, that will be the first run at the first login for that user account for that day. This means subsequent logins for that same day (i.e.
<YYYYMMDD>
), these same conditions should never be met to allow the process to get to #3 again since if the lock file already exists it stops running.
O script
Observação: Após a lógica mais baixa de IF [%DAY%]==[Mon] IF NOT EXIST "%userprofile%\~
, você pode colocar lógica de lote adicional ou até mesmo Comece ou Ligue para um processo externo, como um arquivo executável, etc.
@ECHO ON
SET DAY=%DATE:~0,3%
SET YYYYMMDD=%DATE:~10%%DATE:~4,2%%DATE:~7,2%
IF NOT [%DAY%]==[Mon] EXIT
IF [%DAY%]==[Mon] IF EXIST "%userprofile%\Lock_%YYYYMMDD%.lck" EXIT
IF [%DAY%]==[Mon] IF NOT EXIST "%userprofile%\Lock_%YYYYMMDD%.lck" ECHO Script has run %YYYYMMDD% already>>"%userprofile%\Lock_%YYYYMMDD%.lck"
<The rest of your batch logic below >
<Or you can CALL or START EXEs >
<Scooby wanna scoobie snack >
EXIT
Disparador de tarefas agendadas
Observação: você agendará com este método para ambos os métodos e scripts listados acima.
At log on
This trigger causes the task to run when a user logs on to the computer, and the trigger's settings allow you to specify that the task should be triggered when any user logs on the computer or when a specific user logs on.
source