Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 20.08.2016
Сообщений: 15

Сравнение списков и запись результатов

20.08.2016, 05:33. Показов 1964. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем.
Нуждаюсь в Вашей помощи, помогите написать батник.

Нужно следующее:

1. Есть 1.txt файл со следующим примерным содержимым:
/ho/upd/02/having-to-you-time.txt
/hcontent/uplds/206/02/improved-compete-can-passes.jpg
/w/s/201/their-with-pay-the.psd
/lds/hct/skills-your-attention-more.log
/hcont/uplds/206/02/the-or-the-will.to
/ht/s/2/you-whole-The-knowledge.jpg

2. Есть второй 2.txt файл со следующим примерным содержимым:
having-to-you-time.txt
improved-compete-can-passes.jpg
their-with-pay-the.psd
skills-your-attention-more.log

Нужно сравнить первый файл со вторым, при нахождении одинаковых значений, записать всю строку из 1.txt файла в 3.txt файл:
/ho/upd/02/having-to-you-time.txt
/hcontent/uplds/206/02/improved-compete-can-passes.jpg
/w/s/201/their-with-pay-the.psd
/lds/hct/skills-your-attention-more.log

и записать то что осталось в 4.txt файл:
/hcont/uplds/206/02/the-or-the-will.to
/ht/s/2/you-whole-The-knowledge.jpg

Файлы 1 и 2 могут быть размером больше 200 мегабайт.
Спасайте, ума не приложу как реализовать это.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2016, 05:33
Ответы с готовыми решениями:

Запись в файл результатов выполнения cmd
Добрый день! Столкнулся с проблемой которую ни как не удается решить. Имеется cmd файл (допустим check.cmd) который должен проверять...

Выполнение одной программы несколько раз и запись результатов в файл
Всем привет! Собственно вот такая проблема возникла. Есть txt файл. На каждой строчке url. Есть программа которая эти url обрабатывать...

Сравнение списков
Добрый день! Помогите пожалуйста. У меня есть 2 разных списка public List<postgreconnect.posgreconnect.Sinxron> newbd = new...

9
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,881
20.08.2016, 07:00
если тебя интересует скорость выполнения и результат,
а не религиозные предпочтения, связанные с использованием синтаксиса именно интерпретатора cmd,
то всё решение - это 2 одинаковые, отличающиеся только одним символом,
суперкороткие строчки в .bat-файле, которые ты мог бы
написать и сам, установив доп. инструментaрий cygwin.

либо можно использовать powershell, если у тебя Виндовс 7 и старше.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
20.08.2016, 22:38
Цитата Сообщение от Avatarik Посмотреть сообщение
Нужно сравнить первый файл со вторым, при нахождении одинаковых значений, записать всю строку из 1.txt файла в 3.txt файл
Windows Batch file
1
2
3
@echo off
<"1.txt" more|>>"3.txt" findstr/xlg:"2.txt"
exit
Цитата Сообщение от Avatarik Посмотреть сообщение
и записать то что осталось в 4.txt файл
во-первых непонятно зачем это
во-вторых осталось от чего, от 1.txt или от 2.txt?
0
0 / 0 / 1
Регистрация: 20.08.2016
Сообщений: 15
21.08.2016, 00:05  [ТС]
Сорьк. Наверное не правильно выразился.
Потом из 1.txt файла вычесть 3.txt файл и записать в 4.txt файл.

Нужно сравнить первый файл со вторым, при нахождении одинаковых значений, записать всю строку из 1.txt файла в 3.txt файл. Реализовал вот так:

Windows Batch file
1
2
3
4
@echo off
for /f %%i in (2.txt) do (
findstr /c:%%i 1.txt >> 3.txt
)
Но застрял что то на - Потом из 1.txt файла вычесть 3.txt файл и записать в 4.txt файл.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
21.08.2016, 16:59
мой код выше, только 1...4...3 - а?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
21.08.2016, 21:10
Avatarik
Для больших файлов, как и предложил volodin661, существуют более производительные средства.
Например, утилита comm из пакета GNUWin32(порт из Linux) или Сygwin.
Если я правильно понял вашу задачу, то решается она так:
Windows Batch file
1
2
3
4
:: выводим одинаковые строки из 1.txt и 2.txt в файл 3.txt
comm -12 1.txt 2.txt>3.txt
:: выводим уникальные для файла 1.txt строки в 4.txt
comm -23 1.txt 3.txt>4.txt
comm.rar
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
21.08.2016, 22:58
А теперь итоги "олимпиады":
Бегун под номером #6 добрался до финиша за 4 сек, преодолев дистанцию в 3_000_000 строк (30 mb).
Бегун под номером #3 через 10 минут после финиша остановился передохнуть на строчке 64922 и далее больше уже не поднялся. (ограничение more ?).
Второй забег на дистанцию 21_000_000 строк (272 mb) бегун под номером #6 смог закончить за 45 сек.
Выпускать на дорожку бегуна #3 смысла не имело.
PS: Файлы для сравнения для полноты теста отличались только одной последней строкой.
1
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
22.08.2016, 07:40
Цитата Сообщение от Garry Galler Посмотреть сообщение
А теперь итоги "олимпиады":
А вот это очень полезные измерения, особенно для сомневающихся и противников расширения стека технологий. Это ведь, уже не просто "агитация и пропаганда", которым мало кто доверяет, а эмпирические факты.
Лучше один раз установить на необходимое число компьютеров, действительно, функциональный набор программ, причем программ, напрямую предназначенных для работы в комстроке и забыть о ненужной потере времени.
Только оформить бы их посерьёзнее и занести в закреплённые темы...
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,881
22.08.2016, 11:10
Цитата Сообщение от YuS_2 Посмотреть сообщение
А вот это очень полезные измерения, особенно для сомневающихся и противников расширения
в религиозных сообществах никакие доводы направленные против веры не принимаются,
идеи связанные с расширением / изменением об'являются еретическими ( в соврем. редакции еретизм заменяется термином
offtop), еретики сжигаются ( блокируется аккаунт), их работы и книги уничтожаются ( сообщения удаляются ).

По возвращению пастыря( модератора ) из отпуска вышеизложенное будет продемонстрировано в полной мере.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
22.08.2016, 17:15
Дополню тест.
Справедливости ради, нужно уточнить, что вариант от alpap вполне работоспособен на файлах до ~60_000 строк, далее (точная граница числа строк непонятна) more просто ничего не передает. findstr этот диапазон отрабатывает всего за несколько секунд, а не минут как я ошибочно указал.
Правда, поиск findstr делает нечисто, по непонятной причине пропуская часть идентичных строк файлов, которые ничем не отличались, например игнорировал строку с единственным символом 0 . Возможно дело в спецсимволах, которые присутствовали в строках.

Вариант от ТС - не совсем правильный, поскольку писал в файл много лишнего, - я изменил так:
Windows Batch file
1
2
3
4
5
6
echo %time%
for /f %%i in (dict2.txt) do (
  @>nul findstr /xlc:"%%i" dict1.txt && echo %%i>> dict3.txt || echo %%i>> dict4.txt
)
echo %time%
pause
Результат: на файл в 235_000 строк (2.7 mb) он потратил почти 2 часа. Соответственно для 30 mb будет затрачено примерно 20 часов, что вряд ли приемлемо, не говоря уж о времени для файлов в 200-300 mb.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2016, 17:15
Помогаю со студенческими работами здесь

Сравнение списков
Доброго времени суток! Подскажите, пожалуйста, как написать программу, которая сравнивает по количеству элементов два списка.

Сравнение списков
Добрый день. Есть два списка, которые надо добавить в третий. Например, Список один: attribute1, слово attribute2, слово2 ...

Сравнение списков
Доброго времени суток . Нужен небольшой совет по программе . Есть 2 списка (стандартный STL-кий класс list ) , нужно сравнить их на...

Сравнение списков
Есть 2 списка (стринг листа) 1 список 1 2 3 1 1 2 и

Сравнение списков
Попросили на писать программу для сравнения списоков. Написал: TStringList *list1 = new TStringList; list1-&gt;Sorted =...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru