Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сравнение и объединение файлов

Ответить
Настройки темы
CMD/BAT - Сравнение и объединение файлов

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.
Есть два файла:
1.txt с таким содержимым:
200842;text1;text2;text3;text4;text5
200844;some_text1;some_text2;some_text3;some_text4;some_text5
200846;ttext1;ttext2;ttext3;ttext4;ttext5
200847;ntext1;ntext2;ntext3;ntext4;ntext5
200848;otext1;otext2;otext3;otext4;otext5
200849;xtext1;xtext2;xtext3;xtext4;xtext5
200850;ztext1;ztext2;ztext3;ztext4;ztext5


и 2.txt с таким:
200842;0;04041900378031
200844;0;07322540013610
200844;0;07322540381634
200846;0;07322540353358
200847;0;05413760054025
200848;0;04603212002693
200849;0;04603212002709
200850;0;00732250353310
200850;0;07322540353310

(В каждом файле несколько тысяч строк)

Как бы создать третий файл, который представляет из себя копию первого, но с добавленным из второго файла ( в случае совпадения первых позиций) третьим полем.
Т.е., первая строка в новом файле будет выглядеть как:
200842;text1;text2;text3;text4;text5;04041900378031

Отправлено: 18:40, 06-08-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Более интересны примеры для второй и последней строк первого файла, для которых есть повторы во втором файле. Что должно получаться в результате?

Отправлено: 07:09, 07-08-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Извините, плохо сформулировал условия.
До первого вхождения, т.е. итог будет таким:

200842;text1;text2;text3;text4;text5;04041900378031
200844;some_text1;some_text2;some_text3;some_text4;some_text5;07322540013610
200846;ttext1;ttext2;ttext3;ttext4;ttext5;07322540353358
200847;ntext1;ntext2;ntext3;ntext4;ntext5;05413760054025
200848;otext1;otext2;otext3;otext4;otext5;04603212002693
200849;xtext1;xtext2;xtext3;xtext4;xtext5;04603212002709
200850;ztext1;ztext2;ztext3;ztext4;ztext5;00732250353310

Сделал вот так:

echo off

for /f "tokens=1-7 delims=;" %%i in (1.txt) do (

call :inner %%i

)
goto :eof

:inner
for /f "tokens=1-3 delims=;" %%a in (2.txt) do (

IF "%%i"=="%%a" 1>>3.txt echo %%i;%%j;%%k;%%l;%%m;%%n;%%o;%%c && goto :break

)
:break


Вроде работает, но очень медленно
Есть способы ускорить?

Последний раз редактировалось veresov, 07-08-2012 в 12:43.


Отправлено: 11:02, 07-08-2012 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата veresov:
Есть способы ускорить? »
Попробуйте так:
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
For /F "tokens=1-3 delims=;" %%a In (2.txt) Do If Not Defined $%%a Set $%%a=%%c
(For /F "tokens=1* delims=;" %%a In (1.txt) Do If Defined $%%a (Echo %%a;%%b;!$%%a!) Else Echo %%a;%%b)>3.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:29, 07-08-2012 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


gora, спасибо!
Так, действительно, быстрее. ( почти в 15!!! раз)

Отправлено: 10:44, 08-08-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сравнение и объединение файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сравнение текстовых файлов Speedy Программное обеспечение Windows 9 30-03-2015 02:42
Объединение/разделение txt файлов AlexeyN Программное обеспечение Windows 6 27-11-2012 09:40
объединение inf файлов netsupport Хочу все знать 5 14-07-2010 09:45
Delphi - [решено] Сравнение файлов. Snake750 Программирование и базы данных 6 15-03-2010 00:42
Сравнение файлов Guest Программирование и базы данных 6 24-04-2004 04:47




 
Переход