Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получение статуса задания планировщика с помощью schtasks (http://forum.oszone.net/showthread.php?t=197804)

Vadikan 27-01-2011 15:49 1598448

[решено] Получение статуса задания планировщика с помощью 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 в переменную?
Спасибо!

gora 27-01-2011 16:05 1598462

Цитата:

Цитата Vadikan
Есть команда »

Уточните систему. У меня на ХР эта команда выдает
Цитата:

Ошибка: Неправильный параметр или аргумент - '/tn'.
Введите "SCHTASKS /QUERY /?" для получения справки по использованию.
В справке такой ключ отсутствует.

Vadikan 27-01-2011 16:14 1598463

Цитата:

Цитата gora
Уточните систему »

Конфигурация у меня заполнена, и мне не нужно для ХР :) Там и задания такого нет.

Petya V4sechkin 27-01-2011 16:32 1598488

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 (на английской тоже должно работать).

Vadikan 27-01-2011 16:43 1598497

Petya V4sechkin, спасибо, работает!

amel27 27-01-2011 16:58 1598513

Цитата:

Цитата 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 1598518

Цитата:

Цитата amel27
if /i "%%i"=="Status"

На русской 7 не получится.

amel27 27-01-2011 17:36 1598547

Цитата:

Цитата Petya V4sechkin
На русской 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 1598626

Цитата:

Цитата amel27
хотя из примера напрашивается SKIP=4

Там еще пустая строчка в начале.

Vadikan 27-01-2011 23:16 1598776

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, мне было нужно именно это, но теперь поменял на "разное".


Время: 18:42.

Время: 18:42.
© OSzone.net 2001-