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

Объединение содержимого одноимённых текстовых файлов

02.07.2015, 08:46. Показов 4878. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько папок, в них текстовые файлы с одинаковыми именами (Регион), как можно объединить файлы с одинаковыми именами в один, папок может быть много... В текстовиках идут номера телефонов в таком виде:
896555544
546464646
897979879
797798987
Помогите, ничего не нашел на форуме.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2015, 08:46
Ответы с готовыми решениями:

Удаление одноименных текстовых файлов
Добрый день! Подскажите пожалуйста, как реализовать следующую задачу. Есть каталог- Июль. В нем 30 папок- 1, 2, 3 ...30 Папки...

Объединить каждую группу одноимённых текстовых файлов из разных папок в один файл с соответствующим именем
Добрый вечер. Имеются базы в формате тхт в разных папках. Нужно скопировать + дописать из этих файлов в один. Пример: ...

Объединение текстовых файлов в один
Есть каталог с кучей однотипных файлов .txt. Нужно их объединить в один. Код вроде бы понятен: for %f in (*.txt) do type...

18
 Аватар для ComSpec
3463 / 2001 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.07.2015, 14:23
Цитата Сообщение от mordamen Посмотреть сообщение
...ничего не нашел на форуме.




Верю. Интересная задача. И решение предложу оригинальное:


Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
 
2>nul del/a/f *.txt
 
for /f "delims=" %%i in ('2^>nul dir/a-d/b/s "*.txt"') do (
 set "*%%~nxi=*"
)
for /f "delims=*=" %%i in ('set *') do (
 for /f "delims=" %%j in ('2^>nul dir/a-d/b/s "%%i"') do (
  <"%%j">>"%%i" more
 )
)
 
exit/b

.



Пакетный файл с данным кодом нужно поместить в директорию с Вашими папками. В ней самой не должно быть никаких файлов с расширением ".txt", иначе они будут удалены. В именах файлов нежелательны символы знака равенства. Все результирующие файлы появятся в этой же директории.



Пояснения к коду:

1) сначала определяются все имена файлов, и каждое имя становится второй частью имени переменной со значением "*", первая же часть этого имени является идентификатором "*" (так как этот символ не может встретиться в имени файла);

2) далее из списка таких переменных поочерёдно ищутся все файлы с одинаковыми именами, и их содержимое собирается в соответствующие одноимённые результирующие файлы.
1
0 / 0 / 0
Регистрация: 02.07.2015
Сообщений: 2
02.07.2015, 16:15  [ТС]
Отлично все почти работает
Доходит до списка "Москва" и все дальше не идет, в чем причина? Это что общая нелюбовь к городу)
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2015, 20:46
Добрый день.

Подскажите, а как правильно прописать, если батник находится в другой директории, а склеить файлы нужно в дир. - например D:\back ( это робочий каталог с множеством подкаталогов). А вывести файлы в директорию D:\rezult ? Что то никак не хочет работать . Спасибо.
0
 Аватар для ComSpec
3463 / 2001 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.10.2015, 21:48
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
 
set "source=D:\back"
set "destination=D:\rezult"
 
for /f "delims=" %%i in ('2^>nul dir/a-d/b/s "%source%\*.txt"') do (
 set "*%%~nxi=*"
)
for /f "delims=*=" %%i in ('set *') do >"%destination%\%%i" (
 for /f "delims=" %%j in ('2^>nul dir/a-d/b/s "%source%\%%i"') do @(
  <"%%j" more
 )
)
 
exit/b
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 74
02.10.2015, 22:03
Спасибо вам ОГРОМНОЕ!!!
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.10.2015, 18:05
... Вариант с временным файлом. Файлов может быть много и запихнуть все в переменную может не получиться.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
if exist "%temp%\~?.tmp" (2>nul del /f "%temp%\~?.tmp")
 
:: корневая папка
set "root=d:\root"
:: папка куда будут записаны объединенные файлы
set "result=d:\result"
if not exist "%result%\" md "%result%"
 
chcp 1251
:: составление списка
for /f "delims=" %%i in ('2^>nul dir /b/s/a-d "%root%"') do (
  echo %%~nxi^|%%i>>%temp%\~1.tmp
)
:: слияние файлов
for /f "tokens=1,2 delims=|" %%i in (%temp%\~1.tmp) do (
  type "%%j">>"%result%\%%i"
  echo.>>"%result%\%%i"
)
exit/b
 
::-------------------------------------------------------------------
:: слияние файлов - вариант с созданием доп. подпапок с именем файла
for /f "tokens=1,2 delims=|" %%i in (%temp%\~1.tmp) do (
  if not exist "%result%\%%~nj\" md "%result%\%%~nj" 
  type "%%j">>"%result%\%%~nj\%%i"
  echo.>>"%result%\%%~nj\%%i"  
 
)
1
0 / 0 / 0
Регистрация: 10.07.2021
Сообщений: 7
10.07.2021, 18:48
А можете пожалуйста подсказать, как сделать чтоб он брал только файлы с нужным названием ?

Добавлено через 9 минут
Garry Galler, А можете пожалуйста подсказать, как сделать чтоб он брал только файлы с нужным названием ?
P.s Извините , что 2 сообщения , я не знаю как тут удалять их и я новичок на данном форуме, и изначально не знал как спросить именно у нужного человека.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.07.2021, 19:37
Prosto_loss, нужных названий несколько или оно одно?
0
0 / 0 / 0
Регистрация: 10.07.2021
Сообщений: 7
10.07.2021, 20:04
Karen87, Два
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
10.07.2021, 22:03
Prosto_loss, значит от Вас нужно:
1) Каталог(-и) в которых необходимо произвести поиск этих 2-х файлов
2) Имена этих 2-х файлов
3) Имя результирующего файла
0
0 / 0 / 0
Регистрация: 14.07.2019
Сообщений: 18
13.07.2021, 14:39
А подскажите на сегодня в вин 10 этот код работает, а то пробую обеденить тхт файлы и не срабатывает
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.07.2021, 14:44
Цитата Сообщение от makskyr Посмотреть сообщение
обеденить
для данного кода не имеет значение будет ли это win10(8,7), главное следите за путями и еще может иметь значение кодировка txt и наличие в них кириллицы и пр.
1
0 / 0 / 0
Регистрация: 14.07.2019
Сообщений: 18
16.07.2021, 13:03
А подскажите пробую применить это скрипт, после запуска такое окно и ничего не происходит ?
Миниатюры
Объединение содержимого одноимённых текстовых файлов  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.07.2021, 13:14
makskyr, похоже на то, что в процессе работы
1
0 / 0 / 0
Регистрация: 14.07.2019
Сообщений: 18
16.07.2021, 13:28
а в папке результат не должны появляться объедененные файлы ?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.07.2021, 13:36
По идее должны, не появляются? Вы лучше опишите задачу свою, попробуем реализовать
1
0 / 0 / 0
Регистрация: 14.07.2019
Сообщений: 18
16.07.2021, 14:28
ок. спасибо. процесс пошел, у меня просто в одной папке более 60000 тхт файлов и в другой так же. поэтому я так понял процесс долгий.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
16.07.2021, 14:37
На всякий случай ещё одно решение:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set "input=C:\test_1"
set "output=C:\test_2"
for /f "tokens=* delims=" %%a in ('powershell -executionpolicy bypass -command "$group=Get-ChildItem '%input%' -file -recurse -include '*.txt' | foreach -Begin {$array=@()} -process {$array+=$_.name} -end {$array} | Group-Object; foreach ($a in $group) {if ($a.count -ge 2) {$a.name}}"') do (
    for /f "tokens=* delims=" %%b in ('dir /a-d/b/s "%input%\*.txt"') do (
        if "%%a"=="%%~nxb" (
            type "%%b" >>"%output%\result_%%~na.txt"
        )
    )
)
pause
exit
Примечание.
1) Во 2-ой строчке нужно указать путь к обрабатываемому каталог
2) В 3-ей строчке нужно указать путь к каталогу, в котором будут сохранены агрегированные файлы
3) В данном скрипте я заложил логику, при которой файлы, имена которых встречаются 2 и более раз агрегируются
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2021, 14:37
Помогаю со студенческими работами здесь

Сравнение содержимого набора текстовых файлов
Уважаемые знатоки, не откажите в помощи новичку! Задача такова - необходимо взять много *.c;*.h (находятся в разных каталогах, есть...

Запись содержимого текстовых файлов в другой файл
Нужно скопировать содержимое всех текстовых файлов в каталоге в один новый текстовый файл. Делаю так: @echo off Set Source=E:\oc ...

Сравнение содержимого двух текстовых файлов построчно
Доброго всем дня. Есть три текстовых файла. В первом 1.txt - список &quot;зеленых&quot; IP. Во второй 2.txt - прописывается внешний IP, который...

Сравнение содержимого двух текстовых файлов построчно
Здравствуйте! Очень нужна помощь! Есть текстовый файл 1.txt (50 строк), текстовый файл 2.txt (1000 строк). Необходимо их сравнить и...

Объединение содержимого файлов, заданных параметрами
Помогите, пожалуйста с заданием по созданию батника ! Я в этом деле новичок и толком пока ничего не знаю... Если не сложно помогите...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru