Командний рядок або пакетний cmd для об'єднання декількох файлів


99

У мене в одному каталозі 50 текстових файлів.

Чи існує метод командного рядка Windows для об'єднання цих файлів в один файл?

Я використовую Windows Vista .

Я не хочу вводити ім'я всіх файлів.


яку версію DOS ви використовуєте? :) давай, дайте нам більше інформації, які типи файлів ... Ви, очевидно, шукаєте способу об'єднати ці файли.

Повідомлення відредаговано
Міраж

2
DOS в ОС на базі Windows NT (NT, 2000 та все з XP) насправді не DOS, це командна оболонка під назвою "cmd.exe". видалено теги DOS для відображення цього.
квакш-кіхот

вибачте за це, я насправді цього не знав. Я думав як DOS
Mirage

1
на щастя, останні останки DOS загинули разом із Windows ME. :) але не хвилюйтесь - більшість все ще називає командний рядок Windows "DOS", тож це не помиляється , просто неточно . Оскільки реальний DOS все ще використовується іноді, я прибираю тег DOS, щоб бути просто справжніми питаннями DOS.
кихат шарлатан

Відповіді:


128

Я не хочу вводити ім'я всіх файлів.

Це легко уникнути. Відкрийте командний рядок у цій папці та введіть таку команду:

copy /b *.txt newfile.txt

Натисніть Enter.

Тепер у вас буде впорядковано всі текстові файли в цій папці за датою зростання, об'єднані в один файл під назвою newfile.txt.

Моя кінцева мета - зберігати вміст кожного текстового файлу в окремому стовпці аркуша Excel.

Ось підручник, який може допомогти вам досягти своєї "кінцевої мети":

Об’єднайте всі файли CSV або TXT у папці на одному робочому аркуші


Чи можливо вставити новий символ рядка після кожного файлу
Mirage

не з цим методом.
квакш-кіхот

які інші варіанти. моя кінцева мета - зберігати вміст кожного текстового файлу в окремому стовпці аркуша Excel. Будь-які ідеї
Міраж

@Mirage - оновив мою відповідь згідно з вашим коментарем.

Але проблема полягає в тому, як я можу додати символ кінцевої лінії до кожного текстового файлу. В даний час частина файлів тексту знаходиться в одному параграху в об'єднаному файлі, тому excel помістить його в один стовпчик. АБО якщо я можу спочатку додати всі символи кінцевої лінії до всіх файлів, а потім виконати операцію злиття
Mirage

38

Щоб додати новий рядок у кінці кожного зв'язаного файлу, використовуйте typeзамість цього copy:

type *.txt > newfile.txt

5
ПОПЕРЕДЖЕННЯ: Коли ви використовуєте тип * .txt> newfile.txt , текст дублюється.
Malganis

2
Видалити .txtз newfileі бац! Там у вас є.
fa wildchild

Це приголомшлива відповідь на об'єднання файлів журналів або інших речей, які ви будете розбирати по дорозі. Зокрема, факт, який можна обійтися type x.log.* > merged.logбез пакетного файлу. Нові лінії досить легко розібратися.
Даніель Чапман

1
Нічого собі, typeпройшов довгий шлях з DOS 3.3. Я не знав, що ви можете використовувати маски файлів. Коли це сталося?
Нд

32

Припускаючи, що ви говорите про додавання текстових файлів, copyкоманда може використовуватися для їх додавання разом:

copy file1+file2+file3 targetfile

Якщо у вас багато файлів, ви можете циклічно додавати один файл.

Для двійкових файлів додайте /bопцію ' ':

copy /b file1+file2+file3 targetfile

Це передбачає, що ви знаєте, що бінарні файли, з якими ви працюєте, можуть бути додані назад до спини; якщо ні, ви отримаєте грудку марних даних.


5
Це досить корисно, якщо вам потрібно об'єднати файли в певному порядку.
капекс


8

Виконайте таку команду в командному рядку:

for %f in (*.txt) do type "%f" >> output.txt

1
Це не працює, як очікувалося, весь текст дублюється уoutput.txt
DavidPostill

3
Підказка * .txt відповідає output.txt
DavidPostill

@DavidPostill, я відредагував відповідь відповідно до ваших проблем.
Саран

3

Наступний .bat файл додасть усі файли * .for, крім одного з іменем XIT.for, до порожнього файлу з назвою MASTER.for

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


2
Невеликий поворот у вищезазначеному: якщо ви хочете переконатися, що файли об'єднані в алфавітному порядку , слід використовувати: FOR / F %% G IN ('dir / b / o * .for') НЕ ДУМАЙТЕ, АКО НЕ "%% G" == "XIT.for" копія / A MASTER.for + "%% G" && echo. >> MASTER.for
Гідо Доменічі

Мені подобається це. Ще один твіт, який мені потрібен сьогодні, - це друк заголовка імені файлу у файл для розділення вхідних файлів. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Кертіс Ціна

Я усвідомлюю, що використання оболонки bash, мабуть, мало б більше сенсу!
Кертіс Ціна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.