Как узнать статус запланированной задачи с помощью schtasks?

Как узнать статус запланированной задачи с помощью schtasks?

Когда я это запускаю:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Я понимаю это:

Folder: \
TaskName                                 Next Run Time          Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA                N/A                    Disabled

Есть ли способ получить только статус?

решение1

Попробуйте schtasks /queryс /vопцией для подробного вывода и /fo listдля формата списка. Затем отфильтруйте результаты с помощью findкоманды.

schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"

Получается вот такая строка

Status:         Running

Для извлечения значения статуса используйте forкоманду:

for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
  • Для использования в пакетном файле замените %aна%%a
  • Для экранирования символов типа |или >в forкоманде используйте^

решение2

Если вам действительно не нужно использовать schtasks.exePowerShell, используйте его со всеми его превосходными возможностями вывода и форматирования:

Get-ScheduledTask | ? TaskName -eq GoogleUpdateTaskMachineUA | Select State | ft -AutoSize

или

(Get-ScheduledTask | Where TaskName -eq GoogleUpdateTaskMachineUA ).State

решение3

Есть ли способ получить только статус?

Используйте следующую команду:

for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a

Примечания:

  • skip=3- игнорировать строки заголовка
  • tokens=4- возьмите 4-й токен (значение в столбце статуса)
  • Для использования в пакетном файле замените %aна%%a

Пример использования:

F:\test>schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Folder: \
TaskName                                 Next Run Time          Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA                03/02/2016 12:17:00    Ready

F:\test>for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
Ready

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • для /ф- Циклическая команда по результатам другой команды.
  • schtasks- Создать/изменить запланированное задание/задачу. Задание может быть создано на локальном или удаленном компьютере.

решение4

Если вы пишете скрипт Powershell с использованием Windows 7 и не можете использовать Get-ScheduledTask, вы можете рассмотреть возможность использования:

$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]

Выглядит это так:

### Running this:
schtasks /query /S 'yourServer' /TN yourTask
### Leads to the output below.

Folder: \
TaskName                                 Next Run Time          Status         
======================================== ====================== ===============
yourTask                                 N/A                    Running   

### Running this:
$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]
Write-Host "$($status)"
### Leads to the output below

Running

Связанный контент