Como agendar uma tarefa para ser executada semanalmente, mas apenas no LogOn?

4

Eu tenho o Windows 7 Ultimate 32 Bit. Desejo agendar uma tarefa para ser executada semanalmente, mas no LogOn. por exemplo. Todas as segundas-feiras sempre que eu fizer login no Windows, a tarefa deverá ser executada.

Eu passei pelas opções, mas acredito que não encontrei nenhuma opção relevante para tal exigência. Você pode executar uma tarefa em cada logon ou semanalmente.

Existe alguma maneira de conseguir isso?

Como último recurso, terei que modificar meu programa para executar todos os logon, mas faça a tarefa pretendida toda semana.

Obrigado.

    
por pat2015 11.03.2017 / 11:01

1 resposta

3

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:

  1. 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):

  1. Stop running if the day is not Monday (you don't want it to run on other days)
  2. Stop running if the day is Monday and if a lock file exists (see #3)
    • both conditions in #2 must be true
  3. Create a <YYYYMMDD> named lock file if the day is Monday and the file doesn't exist already
  4. 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

Maisrecursos

por 11.03.2017 / 12:20