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

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

Strategist 30-01-2014 15:56 2299306

Разбиение на строки с дальнейшим разбиением на несколько переменных
 
Здравствуйте, есть zabbix и необходимость отслеживания выполнения заданий в планировщике Windows Server 2008
нужен bat файл который будет делать следующее:
1) запускать команду schtasks /query /TN "xxxxxxx" /FO LIST /V
которая выдает информацию в следующем виде:
Код:


Папка: \
Имя узла:                                            xxxxxxx
Имя задачи:                                          \Backup
Время следующего запуска:                            31.01.2014 2:00:00
Состояние:                                          Готово
Режим входа в систему:                              Интерактивный/фоновый
Время прошлого запуска:                              30.01.2014 1:59:59
Прошлый результат:                                  0
Автор:                                              xxxxxxx\xxxxxxx
Задача для выполнения:                              C:\scripts\backup.bat
Рабочая папка:                                      Н/Д
Примечание:                                          Н/Д
Состояние назначенной задачи:                        Включено
Время простоя:                                      Отключено
Управление электропитанием:                          Останавливать при питании от батареи
Запуск от имени:                                    xxxxxxx\xxxxxxx
Удалить задачу, если она не перенесена:              Включено
Остановить задачу, если она выполняется X ч и X мин: 12:00:00
Расписание:                                          Планирование данных в этом формате недоступно.
Тип расписания:                                      Ежедневно
Время начала:                                        2:00:00
Дата начала:                                        21.12.2013
Дата окончания:                                      N/A
дн.:                                                Каждые 1 дн.
мес.:                                                N/A
Повторять: каждые:                                  Отключено
Повторять: до: время:                                Отключено
Повторять: в течение: длительность:                  Отключено
Повторять: остановить, если выполняется:            Отключено

Кто еще не знает про эту команду надеюсь информация будет кому-нибудь полезной

2) Выбирать конкретную строку: "Прошлый результат: 0"
3) Давать на выходе значение 0 или 1 из этой строки

Помогите пожалуйста никак не могу справиться, пытал через вложенные циклы for (для разделения на строки с дальнейшим разделением на переменные с разделителем ":") но никак не могу с ними справиться.
Желательно все через переменные без создания лишних файлов
Спасибо

Iska 30-01-2014 19:30 2299457

Цитата:

Цитата Strategist
1) запускать команду schtasks /query /TN "xxxxxxx" /FO LIST /V

Кто еще не знает про эту команду надеюсь информация будет кому-нибудь полезной»

Судя по schtasks query, данная подкоманда не поддерживает параметр «/tn».

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
        `schtasks.exe /query /fo csv /v ^| find.exe /i "Солитер"`
) do call :GetLastResult %%i

if defined LastResult echo [%LastResult%]

endlocal
exit /b 0

:GetLastResult
        setlocal enableextensions enabledelayedexpansion
        set sOut=%~0
        endlocal & set %sOut:~4%=%~6
        exit /b


Foreigner 30-01-2014 19:47 2299473

Лучше в /fo csv:
Код:

@echo off
setlocal

for /f "tokens=7 delims=," %%i in ('schtasks /query /tn "\Backup" /fo csv /v /nh') do set "code=%%~i"
echo %code%


Iska 31-01-2014 01:45 2299605

Foreigner, а у меня так 8-й токен выходит — по запятой внутри «Время следующего запуска» и «Время прошлого запуска» (если они есть, разумеется).

Strategist 31-01-2014 08:50 2299681

Большое спасибо, Foreigner и Iska
Iska да да действительно на мелкомягком написано что /tn не поддерживается но на самом деле это не так.
Ваш пример явно рабочий, но к сожалению заставить его работать как мне нужно я не смог :-))))) у меня он выдает время прошлого запуска, а не следующий параметр т.е. результат запуска.
Foreigner кратко ясно лаконично спасибо большое, как я сам не догадался что лучше делать csv ибо тогда разбор идет просто по запятой не знаю......
PS лично у меня по команде help schtasks выдается следующее
Код:

    /NH                  Указывает, что строка заголовков столбцов
                        не отображается при выводе. Это требуется
                        только для формата TABLE.

а у нас формат csv
Поэтому после того как я убрал этот параметр из скрипта все полетело отлично

Iska 31-01-2014 09:19 2299689

Цитата:

Цитата Strategist
Iska да да действительно на мелкомягком написано что /tn не поддерживается но на самом деле это не так. »

На какой ОС Ваш пример:
Цитата:

Цитата Strategist
1) запускать команду schtasks /query /TN "xxxxxxx" /FO LIST /V
которая выдает информацию в следующем виде: »

работает именно в озвученном Вами виде?

Цитата:

Цитата Strategist
Ваш пример явно рабочий, но к сожалению заставить его работать как мне нужно я не смог :-))))) у меня он выдает время прошлого запуска, а не следующий параметр т.е. результат запуска. »

Значит другое количество/порядок полей. Очевидно, потому у меня в примере коллеги Foreigner выходил иной результат. Выложите результат исполнения:
Код:

schtasks.exe /query /fo csv /v

Strategist 31-01-2014 09:58 2299704

Вложений: 1
Как я и писал Windows server 2008 R2 Enterprice
на Windows 7 Pro sp1 работает абсолютно так же как как и на сервере
именно в озвученном мной виде
Результат выполнения в приложенном файле

Iska 31-01-2014 10:16 2299713

Цитата:

Цитата Strategist
Как я и писал Windows server 2008 R2 Enterprice »

Ранее Вы писали:
Цитата:

Цитата Strategist
в планировщике Windows Server 2008 »

;).


Цитата:

Цитата Strategist
именно в озвученном мной виде »

Спасибо, ясно. Будем считать, что очередная ошибка в справке. Я, конечно, потом попробую под Microsoft Windows Server 2008 R2.

Цитата:

Цитата Strategist
Результат выполнения в приложенном файле »

Странно. Поля в том же порядке. Должно работать. Проверю и свой код на сервере.

Strategist 31-01-2014 10:47 2299737

да вот так вот немного версия windows поменялась и уже все переписывай, причем ладно бы че-нить полезное добавляли, а то только все местами меняют а глючность как была так и остается... мелкомягкие :-( !!!
Еще раз всем спасибо тема закрыта


Время: 19:24.

Время: 19:24.
© OSzone.net 2001-