Поиск в файле и запись в переменную
Доброго времени суток Уважаемые!
Есть задача: Нужно в файле средствами CMD найти все строки совпадающие с заданным условием поиска в переменной %name% (это текст фамилия или часть названия организации) и ВСЕ найденные строки записать каждую в свою переменную для дальнейшего выбора пользователя нужной переменной (в виде cmd под цифрами 1,2,3 и т.д.) Пользователь выбирает и процесс идет дальше. В принципе к Вам вопрос о том: каким образом записать все найденные варианты в каждый в свою переменную и сделать выбор под цифрами полученных результатов... |
1. на cmd это решается долго, нудно, паскудно. Если есть возможность - лучше смотреть в пошик (обычно такая возможность есть, если нет - аргументы в студию). Вот даже здесь похожая задача решалась.
2. сейчас (а возможно даже уже) в тему заглянет Iska и затребует пример файла, или как минимум задаст вполне справедливые вопросы по кодироке и окончанию строк. |
Очередной вариант создания искусственного интеллекта на CMD
Код:
@Echo Off |
Цитата:
|
Цитата:
Скрытый текст
|
Цитата:
Код:
If %NN% GEQ 1 If %NN% LEQ %i% (Call Set "Select=%%@@%NN%%%" &GoTo :End) |
megaloman, прошу помочь доработать ваш код.
Имеется текстовый файл следующего содержания: index.txt
V 321223032921Z 01 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=server/name=server/emailAddress=mail@mail.ru
V 321223032955Z 02 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=admin/name=server/emailAddress=mail@mail.ru V 321223035016Z 03 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=user1/name=server/emailAddress=mail@mail.ru V 321223035451Z 04 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=user2/name=server/emailAddress=mail@mail.ru R 321223041103Z 05 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=user3/name=server/emailAddress=mail@mail.ru V 321223043210Z 06 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=user4/name=server/emailAddress=mail@mail.ru V 321223045105Z 07 unknown /C=RU/ST=Msk/L=Msk/O=MyOrg/OU=server/CN=user5/name=server/emailAddress=mail@mail.ru Требуется вывести нумерованный список пользовательских сертификатов (начиная со 2-ой строки, значение CN= до следующего разделителя /), кроме сертификата сервера (это первая строка) и к названию сертификата добавить [ОТОЗВАН], при условии, что первая буква в соответствующей имени сертификата строке, будет R. Если V, то ничего не добавлять к имени. Как это реализовать? Просто вывести список пользовательских сертификатов получилось так, взяв за основу ваш код: Код:
@Echo Off Цитата:
Цитата:
|
Код:
@Echo Off |
megaloman, еще просьба есть. Возможно ли добавить сюда сортировку по имени в алфавитном порядке?
А так большое спасибо. Код работает отлично! |
V!RTuE,
Код:
@Echo Off |
megaloman, если в искомом файле нет записей о клиентских сертификатах, то появляется надпись:
Цитата:
В остальном всё прекрасно работает :good: |
Разобрался вроде.
Добавил в начале: Код:
set "xx=" Код:
if "%xx%" == "" GoTo :SKIP Код:
:: Показать список клиентов |
V!RTuE, ИМХО, надо так:
Код:
@Echo Off |
megaloman, всё-равно появляется ошибка. Так как у меня в 2 местах подобный скрипт используется. Первое - это когда надо отозвать сертификат, то там при не нахождении искомой записи скрипт должен завершить работу (точнее вернуться в предыдущий пункт меню).
И второй случай это при создании нового сертификата у меня показывается нумерованный список уже имеющихся, но не без необходимости с ними что-либо делать. Эту часть кода я убрал: Скрытый текст
Код:
:Begin поэтому если и не найдено записей, то я решил, что проще пропустить часть кода, сделав соответствующую метку и перейдя сразу к ней. Ну и надо учитывать, что не закрывая скрипт может потребоваться несколько раз выполнять этот код. и могут как присутствовать записи о сертификатах, так и нет. Чтобы не принимало %xx% старое значение я каждый раз присваиваю ему пустое значение. Вот исправил, как вы написали. Исполняемый код:
Код:
:: Показать список клиентов Вот результат:
Цитата:
P.S.: Опубликовал полностью свой проект :lamer: OpenVPN-All-in-One - Скрипт,облегчающий создание серверной и клиентской части OpenVPN Если будет желание и время разобраться, то прошу ознакомиться. Лучше там продолжить обсуждение. |
Время: 21:31. |
Время: 21:31.
© OSzone.net 2001-