2

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

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Я получаю это:

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

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

6 ответов6

4

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

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

или же

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

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

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

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.
  • for /f - Циклическая команда против результатов другой команды.
  • schtasks - Создание / редактирование запланированного задания / задачи. Задание может быть создано на локальном или удаленном компьютере.
2

Попробуйте 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 использования команды ^
0

Если вы пишете скрипт 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
0

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

$taskName="SomeTask"
$serverName="yourserver"
$status = (schtasks.exe /query /tn "$taskName" /s $serverName /v /fo CSV | ConvertFrom-Csv | Select-Object -Property "Status").Status

Если вы хотите, чтобы все элементы из задачи, вы можете сделать что-то похожее на следующее ...

$task= schtasks.exe /query /tn "$taskName" /s $serverName  /v /fo CSV | ConvertFrom-Csv | Select-Object

Затем вы можете выбрать свойство, с которым хотите работать ...

$task.Status
$task."Last Result"

Не забудьте использовать кавычки вокруг свойств с пробелами в них!

Чтобы уточнить, мой ответ использует Powershell, когда Get-ScheduledTask недоступен, чего не было бы, если бы работал Windows 7 или Windows Server 2008. Хотя один ответ и дает способ получить статус, я чувствую, что этот метод легче понять и с которым можно работать. Тем более, если кто-то может быть заинтересован в получении других свойств запланированной задачи без анализа того, в каком столбце находится это свойство. Короче говоря, мой ответ - это то решение, которое я искал, поэтому я решил поделиться им с другими единомышленниками.

-1

Добавьте /fo csv в команду schtasks чтобы изменить ее формат вывода на CSV.

Затем используйте CSVFix для фильтрации необходимого столбца с аргументом -f 3 и пропустите запись имени поля с -ifn .

schtasks.exe /query /tn "GoogleUpdateTaskMachineUA" | csvfix order -ifn -f 3

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