4

У меня Windows 7 Ultimate 32-битная. Я хочу запланировать выполнение задачи еженедельно, но при входе в систему. Например, каждый понедельник, когда я вхожу в Windows, задача должна выполняться.

Я прошел через варианты, но я полагаю, что я не мог найти какой-либо соответствующий вариант для такого требования. Вы можете запускать задачу при каждом входе в систему или еженедельно.

Есть ли способ добиться этого?

В крайнем случае, мне придется модифицировать мою программу, чтобы она выполняла каждый вход в систему, но выполняла задание каждую неделю.

Благодарю.

1 ответ1

3

Вы можете настроить триггер для запланированной задачи на запуск At log on и запуск от имени Specific User так что да, это означает, что вы будете запускать задачу при каждом входе в систему для этого конкретного пользователя.

Вы можете добавить условную логику для проверки нескольких условий, и, основываясь на этих условиях и логике, вы можете убедиться, что она будет работать только, если день понедельник, или при желании вы можете запустить ее только один раз, если день понедельник - проверка что он не был запущен на определенную <YYYYMMDD> .


Запускать для конкретного пользователя при каждом входе в систему только в понедельник

По сути это будет:

  1. Прекратите работу, если день не понедельник (вы не хотите, чтобы он работал в другие дни)

Сценарий

Примечание. После логики 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

Бонус: запуск только один раз, когда понедельник для конкретного пользователя

По сути это будет (в определенном порядке):

  1. Прекратите работу, если день не понедельник (вы не хотите, чтобы он работал в другие дни)
  2. Прекратите работу, если день понедельник и если существует файл блокировки (см. № 3)
    • оба условия в # 2 должны быть выполнены
  3. Создайте файл блокировки с именем <YYYYMMDD> если день понедельник, а файл еще не существует
  4. Если он дойдет до # 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

Запланированное задание

Примечание: вы будете использовать этот метод для ОБА перечисленных выше методов и сценариев.

При входе

Этот триггер запускает задачу, когда пользователь входит в систему на компьютере, и настройки триггера позволяют указать, что задача должна запускаться, когда любой пользователь входит в систему на компьютере или когда конкретный пользователь входит в систему.

источник


Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .