Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
Snap
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 15
1

Как проверить, запущено ли в Планировщике заданий выполнение задачи?

21.09.2012, 18:44. Просмотров 5820. Ответов 12

Привет всем!
Задача такая:
- Периодически запускается задача (Task Sheduler). Нужно чтобы, если происходила попытка запустить задачу повторно (через батник), она либо останавливалась и запускалась новая задача, либо новая не запускалась. Самое главное, как реализовать подобную проверку (запущена ли задача) через файл .bat. С процессами все просто, а как быть с задачами я не нашел.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 18:44
Ответы с готовыми решениями:

Как задать выполнение bat-файла в Планировщике заданий?
Здравствуйте. Я уже перечитал кучу советов, пробовал то так, то эдак, но bat файл через...

Создание задачи в Планировщике заданий
Всем привет! Уважаемые эксперты подскажите, пожалуйста, как можно создать в планировщике задач...

Создание задачи в Планировщике заданий
Здравствуйте нужен Батничек, который создаст задачу в планировщике задач, что задача должна делать...

Проверка существования задачи в Планировщике заданий
Всем привет. 3 дня уже бьюсь с проблемой, перечитал уже все, что только можно везде облазил....

Как задать параметр запуска приложения при создании задачи в планировщике?
Привет ! Что-то не нашел этого в справке. Интересует это: Вот демка:

12
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
21.09.2012, 19:25 2
В теме Как в Windows XP выполнить вызов окна "Добавить задание" Планировщика заданий из окна "Выполнить"?
была ссылка на подробнейшею статью.
0
Snap
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 15
24.09.2012, 15:42  [ТС] 3
Спасибо, конечно. Но подобные статьи я уже читал и не одну.
Вопрос в том, возможно ли с помощью каких-либо команд узнать запущена ли задача?
Попробую объяснить на пальцах: если нам требуется узнать запущен ли процесс, то тут можно воспользоваться командами: tasklist, у которой есть фильтр "status eq running". Остановить (отключить) такой процесс можно с помощью команды taskkill. Можно еще использовать программы типа Psexec.
А вот как быть с задачами? Завершить - end, а можно ли как-то статус узнать?
0
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
24.09.2012, 22:08 4
Элементарно - введите
Bash
1
Schtasks
без параметров. И затем парсится.

Либо введите дополнительные параметры, например, если знаете имя задачи.
Полный перечень возможных модификаций выдается командой:
Bash
1
Schtasks /query /?
0
24.09.2012, 22:08
Snap
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 15
25.09.2012, 13:34  [ТС] 5
Просто команда Schtasks не работает, даже с именем задачи. Да и вариант парсится не подходит.
Schtasks /query /? опять же не поддерживает "имя задачи". А при выводе всех задач столбец "status" пустой.
В общем как я понимаю, остается тупо завершать задачу /end, просто если задача не запущена будет сообщение об ошибке.
0
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
25.09.2012, 15:57 6
Что правда? А у меня показывает... (Win 7 Ultimate x64)

На ключ /TN не обратили внимания???
Цитата Сообщение от Snap Посмотреть сообщение
Да и вариант парсится не подходит.
почему?
0
Миниатюры
Как проверить, запущено ли в Планировщике заданий выполнение задачи?   Как проверить, запущено ли в Планировщике заданий выполнение задачи?  
Snap
0 / 0 / 0
Регистрация: 21.09.2012
Сообщений: 15
25.09.2012, 17:24  [ТС] 7
Спасибо за фидбэк.
Походу на ОС Windows 2003 ключ /TN не поддерживается.
И столбец статус как я уже писал выше почему-то пустой...
0
Миниатюры
Как проверить, запущено ли в Планировщике заданий выполнение задачи?  
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
26.09.2012, 10:57 8
Проверил на ХР. Да, просто так не показывает.

Вводите дополнительные параметры: обратите внимание на последний вариант подсказки хелпа на Вашем скрине.

Если ввести так:
Bash
1
schtasks /query /fo table /v
получите все параметры, в том чесле состояние.
А если подставите в команду for вот такую строку:
Bash
1
schtasks /query /fo table /nh /v
уверен - там каждый параметр будет попадает четко под соответствующий токен.

Сейчас некогда, чтобы показать. См. примеры из других тем, или обитатели форума подскажут.
0
komoliddin
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 10
28.11.2018, 17:24 9
Dragokas, помогите пожалуйста
echo показывает только "Не обнаружен" что не так?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
mode con cols=85 lines=45
set aa=NvBatteryBoostCheckOnLogon_{B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}
 
For /F "tokens=2*" %%j In ('schtasks /query /tn "%aa%"') Do Set type=%%j& Set val=%%k
if "%val%"=="Готово" echo  %aa%      Включен && goto next
if "%val%"=="Отключено" echo  %aa%      Отключен && goto next
if errorlevel 0 echo  %aa%      Не обнаружен && goto next
:next
@pause >nul
0
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
28.11.2018, 18:10 10
Значит что:
1) неправильно указан путь или имя задачи
2) отключена или неисправна служба планировщика заданий
3) имеются другие ограничения, политики и т.п.

Запустите:

Windows Batch file
1
schtasks /query /tn "%aa%"
отдельно и проверьте, что показывает
0
KDE777
1865 / 1096 / 419
Регистрация: 22.01.2016
Сообщений: 3,042
28.11.2018, 18:30 11
Цитата Сообщение от komoliddin Посмотреть сообщение
echo показывает только "Не обнаружен" что не так?
Не пробовали использовать для этой задачи PowerShell?

PowerShell
1
Get-ScheduledTask -TaskName 'NvBatteryBoostCheckOnLogon_*' | ft TaskName,TaskPath,State
или

PowerShell
1
Get-ScheduledTask | sort TaskPath,TaskName | ft -a TaskName,TaskPath,State
0
komoliddin
0 / 0 / 0
Регистрация: 04.02.2016
Сообщений: 10
28.11.2018, 20:15 12
Dragokas, http://www.cyberforum.ru/attachment....1&d=1543425332
0
Миниатюры
Как проверить, запущено ли в Планировщике заданий выполнение задачи?  
Dragokas
Эксперт WindowsАвтор FAQ
17112 / 7167 / 863
Регистрация: 25.12.2011
Сообщений: 10,964
Записей в блоге: 16
28.11.2018, 21:05 13
У вас в коде парсинг и условия составлены неверно.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
mode con cols=85 lines=45
set aa=NvBatteryBoostCheckOnLogon_{B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}
 
set "val="
For /F "delims=, tokens=3" %%j In ('schtasks /query /tn "%aa%" /FO CSV 2^>NUL') Do Set val=%%j
if defined val (
  echo Состояние: %val%
) else (
  echo Не существует
)
 
pause >nul
0
28.11.2018, 21:05
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2018, 21:05

Удаление запланированных заданий в планировщике
Как можно удать задания Microsoft? А точнее эти: Microsoft\Windows\Customer Experience...

Выключение компьютера в планировщике заданий
Здраствуйте. Ситуация такая: я задаю через командную строку выключение компьютера shutdown /s /t...

Создать задачу в планировщике заданий windows
Как средствами .NET создать новую задачу и добавить её в планировщик задач? К примеру для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.