Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446

Обработка текстового файла. Поиск и вывод отдельных значений нумерованным списком с доп. условием

01.01.2023, 21:33. Показов 666. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл с таким содержимым:
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, то ничего не добавлять к имени. Как это реализовать?
Просто вывести список пользовательских сертификатов получилось таким способом. Прошу помочь доработать его
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Echo Off
cls
    >nul Chcp 1251
    
    Set "indextxt=C:\Program Files\OpenVPN\easy-rsa\keys\index.txt"
    Set "word=name"
 
    If Not Exist "%indextxt%" (
        Echo Файл "%indextxt%" не найден. &Echo.
        Pause
        Exit /B 2 
    ) 
 
    Set /A i=0
 
    Echo Введите номер, соответствующий сертификату, который требуется отозвать (Enter - завершение работы):
    Echo.
    For /F "usebackq tokens=13 Skip=3 delims=/=" %%s In (`2^>nul Find /I "%word%" "%indextxt%"`) Do (
        Call Set /A i+=1
        Call Set "@@%%i%%=%%s"
        Call Echo %%i%%. %%s
    )
    )
    If %i%==0 (
        Echo Пользовательские сертификаты не найдены  &Echo.
        Pause
        Exit /B 1 
    ) 
 
    :Begin
        Echo.
        Set "NN="
        Set /P NN=N=
        If "%NN%"=="" Exit /B 0
        If %NN% GEQ 1 If %NN% LEQ %i% (Call Set "Select=%%@@%NN%%%" &GoTo :End)
        Echo Введено неверное значение "%NN%", введите верное: &GoTo :Begin
    :End
    Echo вы выбрали: %Select%
 
Pause
Exit /B 0
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.2023, 21:33
Ответы с готовыми решениями:

Вывод эл одном массива в 6 колонок с доп условием
вывести все найденные значения в шесть колонок, причем эл нечетного столбца или четной строки необх заключить в квадратные скобки. в...

Вывод значений из текстового файла в label
Записал значения из лейбла в текстовый файл File.WriteAllText("C:\\sqr.txt", label4.Text); Надо вывести данные обратно при...

ввод, обработка и вывод в отдельных функциях
Надо переписать программу так, чтобы с главной функции в отдельных трех функциях: генерировала массив, обрабатывала, выводила результат. ...

11
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
01.01.2023, 22:03
Windows Batch file
1
2
3
4
5
@echo off
set "file=C:\test\list.txt"
powershell -executionpolicy bypass -command "Get-Content '%file%' | select -Skip 1 | foreach {if ($_ -match '^V') {[regex]::Match("""$($_)""",'CN=.+$').value} else {[regex]::Match("$($_)",'CN=.+$').value + ' [ОТОЗВАН]'}}"
pause
exit
Примечание

1) Вместо C:\test\list.txt во 2-ой строчке указать полный путь к обрабатываемому файлу
2) Батник необходимо сохранить в кодировке OEM-866
0
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
01.01.2023, 22:04  [ТС]
Karen87, без powershell никак не обойтись?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
01.01.2023, 22:06
V1RTuE, при желании можно, но это обезьянство решать такую задачу на чистом cmd
0
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
01.01.2023, 22:12  [ТС]
Karen87, ну вот мне надо именно на cmd. Да и ваш код не выполняют в полной мере задачу. Требуется нумерованный список с возможностью выбора по номеру соответствующего сертификата и дальнейшая его обработка. Ну и имя сертификата это только значение CN= до следующего /. а выводится весь текст после CN=
В общем прошу powershell не предлагать в решении данной задачи. Спасибо.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
01.01.2023, 22:17
V1RTuE, научитесь писать ТЗ для начала и успехов в поиске того кто Вам напишет решение на cmd
0
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
01.01.2023, 22:21  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
научитесь писать ТЗ для начала
а что именно в ТЗ непонятного? вроде тема создана в разделе, в котором и ищу решение (cmd/bat), условия задачи, текстовый файл и полурабочий вариант тоже написал
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
01.01.2023, 22:24
Нумерованный список и т.п. появились среди Ваших хотелок явно не 1-м постом
0
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
01.01.2023, 22:25  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
Нумерованный список и т.п. появились среди Ваших хотелок явно не 1-м постом
согласен. не доглядел. но в представленном мною коде там он реализован. поэтому и просил именно его доработать.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
01.01.2023, 22:35
Ну может кто-то откликнется, я готов реализовать в виде батника, но с использованием powershell
0
967 / 334 / 47
Регистрация: 30.01.2015
Сообщений: 1,446
01.01.2023, 23:07  [ТС]
Цитата Сообщение от V1RTuE Посмотреть сообщение
Нумерованный список и т.п. появились среди Ваших хотелок явно не 1-м постом
Кстати, про нумерованный список написал в самом названии темы а в описании уже не упомянул.
В любом случае надеюсь, что кто-то сможет помочь доработать код
Вам в любом случае спасибо за оказываемую помощь на форуме. Не раз уже выручали
0
 Аватар для Angry Old Man
3004 / 744 / 313
Регистрация: 26.03.2022
Сообщений: 1,390
Записей в блоге: 1
02.01.2023, 07:54
Лучший ответ Сообщение было отмечено V1RTuE как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Echo Off
cls
>nul Chcp 1251
    Set "FileIn=Z:\Program Files\OpenVPN\easy-rsa\keys\index.txt"
 
    If Not Exist "%FileIn%" (Echo Файл "%FileIn%" не найден. &Echo. &Pause &Exit /B 2)
    
    Set /A y=0
    FOR /F "usebackq skip=1 tokens=1,7 delims=/" %%i In ("%FileIn%") DO (
        Set /A y+=1
        Set "xx=%%j"
        Call Set "@@%%y%%=%%xx:~3%%"
        Echo %%i| >nul 2>nul FindStr /B /I /C:"R"&&Call Set "@@%%y%%=%%xx:~3%% [ОТОЗВАН]"
    )
    If %y% EQU 0 (Echo Пользовательские сертификаты не найдены. &Echo. &Pause &Exit /B 1)
 
    Echo Введите номер, соответствующий сертификату, который требуется отозвать (Enter - завершение работы):
    Echo.
    FOR /L %%i In (1,1,%y%) Do (Set "xx=     %%i"&Call Echo %%xx:~-4%%. %%@@%%i%%)
 
    :Begin
        Echo.
        Set "NN="
        Set /P NN=Выбираем номер N=
        If "%NN%"=="" Exit /B 0
        If 1 LEQ %NN% If %NN% LEQ %y% (Call Set "Select=%%@@%NN%%%" &GoTo :End)
        Echo Введено неверное значение "%NN%", введите верное: &GoTo :Begin
    :End
    Echo вы выбрали: "%Select%"
pause
Exit /B
ПропишИте свой путь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.01.2023, 07:54
Помогаю со студенческими работами здесь

Чтение отдельных слов из текстового файла (.tex, .log)
Здравствуйте! У меня появилась такая необходимость, как: чтение строк из лог файла и проводить проверку на строку...

Чтение из текстового файла отдельных элементов массива структур по индексу
Добрый вечер! Нужно прочитать из файла отдельные элементы массива структур по индексу и вывести на экран. Код ниже записывает массив...

Вывод всех доп. значений JavaScript
Нашел вот такой вот скрипт <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> ...

Копирование папок с файлами (c условием из текстового файла)
Добрый день. Уважаемые гуру PowerShella, может быть поможете решить задачку... Суть задачи: Есть сетевой ресурс (папка) в которой...

Сохранение в отдельных файлах всех фрагментов текста из текстового файла, ограниченных определёнными символами
Доброго дня! Просьба помочь написать батник. Есть текстовый файл который необходимо разбить на n кол-во файлов, чтобы в файлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru