Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Разбиение на строки с дальнейшим разбиением на несколько переменных

Ответить
Настройки темы
CMD/BAT - [решено] Разбиение на строки с дальнейшим разбиением на несколько переменных

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, есть 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 (для разделения на строки с дальнейшим разделением на переменные с разделителем ":") но никак не могу с ними справиться.
Желательно все через переменные без создания лишних файлов
Спасибо

Отправлено: 15:56, 30-01-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:30, 30-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Лучше в /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%
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:47, 30-01-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 01:45, 31-01-2014 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 08:50, 31-01-2014 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Strategist:
Iska да да действительно на мелкомягком написано что /tn не поддерживается но на самом деле это не так. »
На какой ОС Ваш пример:
Цитата Strategist:
1) запускать команду schtasks /query /TN "xxxxxxx" /FO LIST /V
которая выдает информацию в следующем виде: »
работает именно в озвученном Вами виде?

Цитата Strategist:
Ваш пример явно рабочий, но к сожалению заставить его работать как мне нужно я не смог :-))))) у меня он выдает время прошлого запуска, а не следующий параметр т.е. результат запуска. »
Значит другое количество/порядок полей. Очевидно, потому у меня в примере коллеги Foreigner выходил иной результат. Выложите результат исполнения:
Код: Выделить весь код
schtasks.exe /query /fo csv /v

Отправлено: 09:19, 31-01-2014 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt sch.txt
(47.9 Kb, 7 просмотров)

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

Отправлено: 09:58, 31-01-2014 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Strategist:
Как я и писал Windows server 2008 R2 Enterprice »
Ранее Вы писали:
Цитата Strategist:
в планировщике Windows Server 2008 »
.


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

Цитата Strategist:
Результат выполнения в приложенном файле »
Странно. Поля в том же порядке. Должно работать. Проверю и свой код на сервере.

Отправлено: 10:16, 31-01-2014 | #8


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 10:47, 31-01-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Разбиение на строки с дальнейшим разбиением на несколько переменных

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] For, чтение двух переменных с каждой строки DesmondTruman Скриптовые языки администрирования Windows 4 21-12-2012 03:12
Route/Bridge - Разбиение сети на подсети OrenLiTo Сетевые технологии 1 12-12-2012 16:44
Автоматическое разбиение диска на разделы на этапе установки old_nick Автоматическая установка Windows 2000/XP/2003 0 06-04-2011 15:55
[решено] Проблема с разбиением диска на разделы при RIS установке madmax24 Автоматическая установка Windows 2000/XP/2003 10 20-06-2007 12:37
[решено] Разбиение жесткого диска при помощи утилит командной строки. Windows 2003 UnDetect Microsoft Windows NT/2000/2003 11 07-02-2006 15:37




 
Переход