
Когда я это запускаю:
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.exe
PowerShell, используйте его со всеми его превосходными возможностями вывода и форматирования:
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