Компьютерный форум 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=355216)

unexisted 05-05-2024 10:41 3027008

Поиск определенных строк из одного файла и сохранение в другой.
 
Здравствуйте всем, ещё раз прошу вашей помощи.

Есть один файл с кучей ненужных строк, и всего двумя полезными строками. (логин и пароль), и это всё повторяется внутри файла. Пример 01.txt:

Ненужные строки
...
Логин
Ненужные строки
...
Пароль
Ненужные строки
...
Логин
Ненужные строки
...
Пароль

Цель кода найти и скопировать в другой файл только те строки, которые начинаются со слов "логин" и "пароль".

Есть следующий код:

@for /f "delims=" %%a in ('^<"%temp%\01.txt" find /i "логин"') do @(set "$a=%%a" &SetLocal EnableDelayedExpansion &echo LOGIN: !$a:~15!>>ИТОГ.txt &EndLocal)
@for /f "delims=" %%a in ('^<"%temp%\01.txt" find /i "пароль"') do @(set "$a=%%a" &SetLocal EnableDelayedExpansion &echo PASSWORD: !$a:~19!>>ИТОГ.txt &EndLocal)

Файл находится в: %temp%\01.txt
Начало строки логин всегда одинаковое, сам логин начинается с 16-го символа, и так же с паролем, он начинается (всегда) с 20-го символа строки.

Минус в том, что итоговый файл получается:
Сначала идут все логины: около 100 шт, а потом все пароли:
LOGIN:
LOGIN:
...
PASSWORD:
PASSWORD:
...

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

Никак не могу реализовать.
Спасибо всем за советы и помощь.

DJ Mogarych 05-05-2024 14:25 3027014

"Сделайте за меня домашку, я ничего не делал в учебном году"

Sham 05-05-2024 17:21 3027015

проверяйте строку внутри итерации по файлу
Код:

@echo off
for /f "delims=" %%s in (01.txt) do (
        set $a=%%s
        setlocal EnableDelayedExpansion
        if /i "!$a:~0,6!" equ "Пароль" (
                echo !$a:~19!>>ИТОГ.txt
        ) else ( if /i "!$a:~0,5!" equ "Логин" (
                echo !$a:~15!>>ИТОГ.txt
        ))
        endlocal
)


unexisted 05-05-2024 18:45 3027019

Sham, спасибо большое, работает идеально.

Есть только одно но, были несколько паролей в виде: !1234567!qwe и !my!password

Из-за присутствия восклицательных знаков в самом пароле, они сохраняются как: qwe и password, то есть только те символы, которые стоят после второго восклицательного знака.

Sham 05-05-2024 21:06 3027023

Цитата:

Цитата unexisted
присутствия восклицательных знаков »

у вас же правильно там - set $a должен быть при выключенном EnableDelayedExpansion, а у меня в итерацию надо перенести.


Время: 00:00.

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