Numufar
08-06-2021, 10:48
Доброго времени суток. Написал небольшой скрипт:
@echo off
echo 1 > C:\Tools\alarm.txt
for /f "skip=3 tokens=8," %%i in ('schtasks /query /fo table /v') DO (
if /i "%%i" neq "0" (echo 0 > C:\Tools\alarm.txt)
)
Скрипт записывает "1" в файл alarm.txt. Затем в for пропускаются первые 3 строки и выбирается нужный столбец (8) из команды, которая выводит список заданий планировщика заданий (столбец с прошлым результатом запуска) и проверяет в условии if, у всех ли заданий этот столбец равен 0. Если все значения равны 0, то в alarm.txt остаётся "1", если хотя бы одно значение не равно 0, то пишет в alarm.txt "0".
Проблема в том, что сам скрипт так же запускается из планировщика заданий, и в момент работы у задания запуска скрипта появляется новый столбец "Работает", что сдвигает нужный столбец прошлого результата запуска с 8 на 9 место. В 8 столбце вместо "0" оказывается "Работает" и скрипт пишет в alarm.txt "0".
Вопрос - как убрать проверку последней строки (задание самого скрипта)? К примеру, сейчас у меня 14 заданий, командой "schtasks /query /fo table /v" выводится 17 строк. Нужно пропускать первые 3 строки и последнюю 17ую строку. Либо в последней строке проверять не 8 столбец, а 9. Спасибо за помощь.
@echo off
echo 1 > C:\Tools\alarm.txt
for /f "skip=3 tokens=8," %%i in ('schtasks /query /fo table /v') DO (
if /i "%%i" neq "0" (echo 0 > C:\Tools\alarm.txt)
)
Скрипт записывает "1" в файл alarm.txt. Затем в for пропускаются первые 3 строки и выбирается нужный столбец (8) из команды, которая выводит список заданий планировщика заданий (столбец с прошлым результатом запуска) и проверяет в условии if, у всех ли заданий этот столбец равен 0. Если все значения равны 0, то в alarm.txt остаётся "1", если хотя бы одно значение не равно 0, то пишет в alarm.txt "0".
Проблема в том, что сам скрипт так же запускается из планировщика заданий, и в момент работы у задания запуска скрипта появляется новый столбец "Работает", что сдвигает нужный столбец прошлого результата запуска с 8 на 9 место. В 8 столбце вместо "0" оказывается "Работает" и скрипт пишет в alarm.txt "0".
Вопрос - как убрать проверку последней строки (задание самого скрипта)? К примеру, сейчас у меня 14 заданий, командой "schtasks /query /fo table /v" выводится 17 строк. Нужно пропускать первые 3 строки и последнюю 17ую строку. Либо в последней строке проверять не 8 столбец, а 9. Спасибо за помощь.