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

casion 16-05-2016 20:19 2635227

Проверка наличия одинаковых строк в двух файлах
 
Добрый день, помогите написать батник.
Нужно следующее:
1. Есть .txt файл со следующим примерным содержимым:
123qwe
23afwae
awe4234
aw3423
2. Есть второй .txt файл со следующим примерным содержимым:
123qwe.53fswe
awefw.2353
awe4234.4awf3
wefaw323.efwe
Нужно сравнить первый файл со вторым, и при нахождении точных полных совпадений до точки во втором файле, записать всю строку в 3 файл:
123qwe.53fswe
awe4234.4awf3

Foreigner 16-05-2016 20:28 2635228

Код:

findstr /bg:1.txt 2.txt > 3.txt

casion 16-05-2016 21:05 2635238

"findstr" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Создается пустой файл 3.txt и все.

alpap 16-05-2016 23:28 2635272

Видмо XP с вырезанным findstr?
Код:

@echo off
for /f "delims=" %%a in ('type "file1.txt"') do for /f "delims=" %%b in ('type "file2.txt"^|find "%%~na"') do echo:%%b>>"file3.txt"
pause>nul


casion 16-05-2016 23:55 2635275

Win7 x64, findstr на месте в C:\Windows\System32. Скопировал файл findstr.exe в папку с батником, опять же ни один из вариантов не работает.
Код:

findstr /bg:1.txt 2.txt > 3.txt
создает пустой 3 файл
Код:

@echo off
for /f "delims=" %%a in ('type "file1.txt"') do for /f "delims=" %%b in ('type "file2.txt"^|find "%%~na"') do echo:%%b>>"file3.txt"
pause>nul

вообще после запуска ничего не делает

casion 17-05-2016 02:16 2635292

разобрался, проблема у меня с системным путем.

Iska 17-05-2016 03:09 2635298

Foreigner, недостаточно — полагаю, сработает, например, на таких строках, как:
Код:

123qw
123qwe.53fswe

а по озвученному условию — не должно срабатывать.

Foreigner 17-05-2016 08:06 2635312

Iska, это частности, по условию там нет таких строк

Iska 17-05-2016 08:17 2635315

Foreigner, в данном случае не могу с Вами согласиться. Тут либо код корректен, либо некорректен.

Foreigner 17-05-2016 09:10 2635324

Iska, таково условие, я его изменить не могу. В конкретном случае, с учетом примеров файлов, код корректен. Если бы были другие установки, то и решение было бы другим. Как-то так. Надо сразу оговаривать нюансы, а то начинается... Сначала найди слово -- хорошо, ищем. Потом фантазия играет и это слово, оказывается, надо куда-то вставить, потом аппетит гонит слюну и это слово уже надо вывернуть на изнанку. И в результате вместо одной строки решения выходит сто и десять никому не нужных вариантов каприз.cmd

casion 17-05-2016 19:07 2635479

Код:

findstr /bg:1.txt 2.txt > 3.txt
этот батник не работает вообще.

Код:

@echo off
for /f "delims=" %%a in ('type "file1.txt"') do for /f "delims=" %%b in ('type "file2.txt"^|find "%%~na"') do echo:%%b>>"file3.txt"
pause>nul

этот работает очень медленно, единственная строка, которую он вывел в 3 файл спустя 10 минут после запуска, была неверная.
нужно точное сравнение строк первого файла со строками второго файла до точки.
длина строк везде разная, от 8-20 символов в 1 файле и 20-50 во втором. в строках английские буквы a-z и цифры.
1 файл весит до 5мб, второй до 150мб.

alpap 17-05-2016 22:20 2635511

Код:

@echo off
for /f "tokens=1,2 delims=." %%a in ('type "file2.txt"') do type "file1.txt"|findstr/xc:"%%a">nul && echo:%%a.%%b>>"file3.txt"
exit/b

.

Foreigner 17-05-2016 22:41 2635515

casion, Лучше выложите пару файлов, строк по 100 каждый.


Время: 12:31.

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