Показать полную графическую версию : Проверка наличия одинаковых строк в двух файлах
Добрый день, помогите написать батник.
Нужно следующее:
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
findstr /bg:1.txt 2.txt > 3.txt
"findstr" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Создается пустой файл 3.txt и все.
Видмо 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
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
вообще после запуска ничего не делает
разобрался, проблема у меня с системным путем.
Foreigner, недостаточно — полагаю, сработает, например, на таких строках, как:
123qw
123qwe.53fswe
а по озвученному условию — не должно срабатывать.
Foreigner
17-05-2016, 08:06
Iska, это частности, по условию там нет таких строк
Foreigner, в данном случае не могу с Вами согласиться. Тут либо код корректен, либо некорректен.
Foreigner
17-05-2016, 09:10
Iska, таково условие, я его изменить не могу. В конкретном случае, с учетом примеров файлов, код корректен. Если бы были другие установки, то и решение было бы другим. Как-то так. Надо сразу оговаривать нюансы, а то начинается... Сначала найди слово -- хорошо, ищем. Потом фантазия играет и это слово, оказывается, надо куда-то вставить, потом аппетит гонит слюну и это слово уже надо вывернуть на изнанку. И в результате вместо одной строки решения выходит сто и десять никому не нужных вариантов каприз.cmd
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мб.
@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
casion, Лучше выложите пару файлов, строк по 100 каждый.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.