|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск по тексту в txt с "если" |
|
|
CMD/BAT - [решено] Поиск по тексту в txt с "если"
|
Пользователь Сообщения: 77 |
Профиль | Отправить PM | Цитировать Добрый день!
Есть текстовый файл со следующим содержанием, в котором состояние логического диска рейда. Скрытый текст
CLI Version: 4.1.10.16 RaidAPI Version: 5.0.0.1061 Welcome to RAID Command Line Interface. > Virtual Disk Information ------------------------- id: 0 name: MicroBox status: degraded Stripe size: 64 RAID mode: RAID1 Cache mode: Off size: 953789 M BGA status: running Block ids: 0 4 # of PDs: 2 PD RAID setup: 0 1 Running OS: yes BGA progress: rebuilding is 23% done Total # of VD: 1 > Type 'exit' to exit CLI. > Выделенная строчка "BGA progress: rebuilding is 23% done" появляется только тогда, когда рейд восстанавливается. Помогите пожалуйста составить батник со следующей логикой: 1. Если в тексте есть слово degraded, но нет rebuilding, выводить "0" (во всех вариантах вывод без кавычек) 2. Если есть rebuilding, выводить цифры без % из этой строки, в данном тексте вывод должен быть "23" 3. Если нет ни degraded, ни rebuilding, выводить "1" |
|
Отправлено: 11:24, 05-04-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата zegordo:
Цитата zegordo:
Я попробовал и вариант с echo и с командной строкой, и тот, и тот, как и ожидалось, работают. При использовании echo потребно использование exit для выхода из утилиты, при использовании командной строки, понятное дело, сие не требуется. Вариант с echo
@echo off setlocal enableextensions enabledelayedexpansion ( echo info -o vd echo exit ) | c:\mvsetup.exe | find.exe /i "degraded" && ( ( echo info -o vd echo exit ) | c:\mvsetup.exe | find.exe /i "rebuilding" && ( echo Status: Degraded and rebuilding exit /b 1 ) || ( echo Status: Degraded exit /b 2 ) ) || ( echo Status: Successfull exit /b 0 ) endlocal exit /b 0 Вариант с командной строкой
@echo off setlocal enableextensions enabledelayedexpansion c:\mvsetup.exe info -o vd | find.exe /i "degraded" && ( c:\mvsetup.exe info -o vd | find.exe /i "rebuilding" && ( echo Status: Degraded and rebuilding exit /b 1 ) || ( echo Status: Degraded exit /b 2 ) ) || ( echo Status: Successfull exit /b 0 ) endlocal exit /b 0 P.S. И всё же утилита не совсем CLI, поскольку ошибки пишет не как положено — в stderr, а, похоже, напрямую в консоль . |
|||
Отправлено: 17:32, 06-04-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать megaloman, я добавил в посте над вами утилиту, можно на ней и потестировать. Минусы же совсем не годятся, т.к. забирать вывод будет zabbix, на минусовом будут проблемы.
Но спасибо за потраченное время. Iska, выводит не только описанный вами статус, но и дважды само слово, т.е. вывод выглядит так: status: degraded status: degraded (и после небольшой паузы уже ваш текст) Status: Degraded p.s. вариант с echo тот что нужен, т.к. запускаться будет именно сам батник. p.p.s. статус выше выдаёт для массива когда там только состояние degraded, если в тексте есть и degraded и rebuilding будет вывод выглядеть так: status: degraded BGA progress: rebuilding is 0% done Status: Degraded and rebuilding |
Отправлено: 18:08, 06-04-2018 | #22 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zegordo:
Попробуйте так: Вариант с echo
@echo off setlocal enableextensions enabledelayedexpansion ( echo info -o vd echo exit ) | c:\mvsetup.exe | >nul find.exe /i "degraded" && ( ( echo info -o vd echo exit ) | c:\mvsetup.exe | >nul find.exe /i "rebuilding" && ( echo Status: Degraded and rebuilding exit /b 1 ) || ( echo Status: Degraded exit /b 2 ) ) || ( echo Status: Successfull exit /b 0 ) endlocal exit /b 0 Вариант с командной строкой
@echo off setlocal enableextensions enabledelayedexpansion c:\mvsetup.exe info -o vd | >nul find.exe /i "degraded" && ( c:\mvsetup.exe info -o vd | >nul find.exe /i "rebuilding" && ( echo Status: Degraded and rebuilding exit /b 1 ) || ( echo Status: Degraded exit /b 2 ) ) || ( echo Status: Successfull exit /b 0 ) endlocal exit /b 0 Цитата zegordo:
|
||
Отправлено: 18:33, 06-04-2018 | #23 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать zegordo,
Если Минусы же совсем не годятся, то вот по Вашей постановке (еще проще)
Вариант с текстовым файлом
@Echo Off cls Set "FileIn=Z:\Soft_In\text1.txt" Set "Word1=degraded" Set "Word2=rebuilding" Set /A OutErr=1 find /i "%Word1%" "%FileIn%" >nul &&Set /A OutErr=0 Set "Proc=" FOR /F "usebackq tokens=5 delims= " %%s IN (`"find /i "%Word2%" "%FileIn%""`) DO Set "Proc=%%s" If Not "%Proc%"=="" Set /A OutErr=%Proc:~0,-1% Echo %OutErr% pause Exit /B %OutErr% Set PRG="c:\mvsetup.exe" тра ля ля ) @Echo Off cls Set PRG="c:\mvsetup.exe" Set "Word1=degraded" Set "Word2=rebuilding" Set /A OutErr=1 %PRG% |find /i "%Word1%" >nul &&Set /A OutErr=0 Set "Proc=" FOR /F "usebackq tokens=5 delims= " %%s IN (`"%PRG% |find /i "%Word2%""`) DO Set "Proc=%%s" If Not "%Proc%"=="" Set /A OutErr=%Proc:~0,-1% Echo %OutErr% pause Exit /B %OutErr% |
------- Отправлено: 18:47, 06-04-2018 | #24 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Извиняюсь за поздний ответ, на выходных не было возможности проверить.
Большое спасибо всем кто откликнулся и, особенно Iska: ваш вариант пойдёт в бой |
Отправлено: 09:17, 09-04-2018 | #25 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как правильно устанавливать программы если есть "Администратор" и "обычный пользоват" | alex2887 | Хочу все знать | 6 | 24-02-2017 13:02 | |
CMD/BAT - Как из строки в .txt вывести символы "которые там обновляются"в другой .txt | Bombastig | Скриптовые языки администрирования Windows | 6 | 08-02-2014 04:54 | |
CMD/BAT - [решено] Нужно создать "батник" - вырезать из "2.txt" первых n строк и вставить их в "1.txt" | temphard | Скриптовые языки администрирования Windows | 12 | 10-01-2014 18:36 | |
Разное - [решено] Возвращение в меню "Создать" пункта "Текстовый документ", ассоциирование с TXT | Pavla | Microsoft Windows 7 | 16 | 10-07-2012 07:47 | |
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы | rustoss | AutoIt | 10 | 29-09-2011 15:27 |
|