Показать полную графическую версию : [решено] Получение статуса задания планировщика с помощью schtasks
Всем привет!
Вопрос, наверное, очень простой для гуру ;) Есть команда
schtasks /query /fo list /tn Microsoft\Windows\Defrag\ScheduledDefrag
Выдает:
Folder: Microsoft\Windows\Defrag
HostName: TEST374
TaskName: Microsoft\Windows\Defrag\ScheduledDefrag
Next Run Time: 2/2/2011 2:47:45 AM
Status: Ready
Logon Mode: Interactive/Background
Альтернативный вариант - без /fo list. Вывод:
Folder: Microsoft\Windows\Defrag
TaskName Next Run Time Status
======================================== ====================== ===============
ScheduledDefrag 2/2/2011 1:29:58 AM Ready
Как получить значение для Status в переменную?
Спасибо!
Есть команда »
Уточните систему. У меня на ХР эта команда выдаетОшибка: Неправильный параметр или аргумент - '/tn'.
Введите "SCHTASKS /QUERY /?" для получения справки по использованию.
В справке такой ключ отсутствует.
Уточните систему »
Конфигурация у меня заполнена, и мне не нужно для ХР :) Там и задания такого нет.
Petya V4sechkin
27-01-2011, 16:32
Vadikan, вот, на коленке:
@Echo Off
SetLocal EnableExtensions
For /F "Tokens=1* Skip=5 Delims=: " %%I In ('Schtasks /Query /Fo List /Tn Microsoft\Windows\Defrag\ScheduledDefrag') Do (
Set Status=%%J
GoTo ExitFor
)
:ExitFor
Echo Статус задания: %Status%
Проверял на русской 7 (на английской тоже должно работать).
Petya V4sechkin, спасибо, работает!
вот, на коленке »
так должно быть быстрей, переход по метке - очень медленная команда:
@echo off
for /f "tokens=1* delims=: " %%i in (
'schtasks /query /fo List /tn Microsoft\Windows\Defrag\ScheduledDefrag'
) do if /i "%%i"=="Status" set "STATUS=%%j"
echo Статус задания: %STATUS%
pause>nul
P.S. 7-ки под рукой нет проверить (
Petya V4sechkin
27-01-2011, 17:01
if /i "%%i"=="Status"
На русской 7 не получится.
На русской 7 не получится. »
для поддержки 2-го языка можно добавить ELSE IF, для SKIP может быть так:
@echo off
for /f "skip=5 tokens=1* delims=: " %%i in (
'schtasks /query /fo List /tn Microsoft\Windows\Defrag\ScheduledDefrag'
) do if not defined STATUS set "STATUS=%%j"
echo Статус задания: %STATUS%
pause>nul
...хотя из примера напрашивается SKIP=4... :idontnow:
Petya V4sechkin
27-01-2011, 19:41
хотя из примера напрашивается SKIP=4
Там еще пустая строчка в начале.
amel27, спасибо, так тоже работает.
Добавлю вариант на PowerShell от Василия Гусева
$tasks = [xml](schtasks /query /tn Microsoft\Windows\Defrag\ScheduledDefrag /xml one)
$($tasks.Task.settings.enabled)
Сам XML можно посмотреть командой в круглых скобках из первой строки, либо в не очень приглядном виде вывести так: $tasks.outerxml
Я всегда снизу вверх смотрю на гуру этого форума, которым по силу любые задачи на CMD/VBS, но нельзя не отметить, что работа PowerShell с XML значительно упрощает решение :)
Да, я помню, что задал категорией темы CMD, мне было нужно именно это, но теперь поменял на "разное".
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.