Вы можете настроить триггер для запланированной задачи на запуск At log on
и запуск от имени Specific User
так что да, это означает, что вы будете запускать задачу при каждом входе в систему для этого конкретного пользователя.
Вы можете добавить условную логику для проверки нескольких условий, и, основываясь на этих условиях и логике, вы можете убедиться, что она будет работать только, если день понедельник, или при желании вы можете запустить ее только один раз, если день понедельник - проверка что он не был запущен на определенную <YYYYMMDD>
.
Запускать для конкретного пользователя при каждом входе в систему только в понедельник
По сути это будет:
- Прекратите работу, если день не понедельник (вы не хотите, чтобы он работал в другие дни)
Сценарий
Примечание. После логики IF NOT [%DAY%]==[Mon] EXIT
можно установить дополнительную пакетную логику или даже запустить или вызвать внешний процесс, такой как исполняемый файл и т.д.
@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
Бонус: запуск только один раз, когда понедельник для конкретного пользователя
По сути это будет (в определенном порядке):
- Прекратите работу, если день не понедельник (вы не хотите, чтобы он работал в другие дни)
- Прекратите работу, если день понедельник и если существует файл блокировки (см. № 3)
- оба условия в # 2 должны быть выполнены
- Создайте файл блокировки с именем
<YYYYMMDD>
если день понедельник, а файл еще не существует
- Если он дойдет до # 3 и создаст файл блокировки, то это будет первый запуск при первом входе в систему для этой учетной записи пользователя за этот день. Это означает, что при последующих входах в систему в тот же день (т.
<YYYYMMDD>
) эти же условия никогда не должны выполняться, чтобы процесс мог снова попасть в # 3, поскольку, если файл блокировки уже существует, он прекращает работу.
Сценарий
Примечание. После самой нижней части IF [%DAY%]==[Mon] IF NOT EXIST "%userprofile%\~
логики % userprofile%\~ можно добавить дополнительную пакетную логику или даже запустить или вызвать внешний процесс, такой как исполняемый файл и т.д. ,
@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
Запланированное задание
Примечание: вы будете использовать этот метод для ОБА перечисленных выше методов и сценариев.
При входе
Этот триггер запускает задачу, когда пользователь входит в систему на компьютере, и настройки триггера позволяют указать, что задача должна запускаться, когда любой пользователь входит в систему на компьютере или когда конкретный пользователь входит в систему.
источник
Дополнительные ресурсы