Wiersz polecenia lub wsadowe polecenie cmd do łączenia wielu plików

99

Mam 50 plików tekstowych w jednym katalogu.

Czy istnieje metoda wiersza polecenia systemu Windows do łączenia tych plików w jeden plik?

Korzystam z systemu Windows Vista .

Nie chcę wpisywać nazwy wszystkich plików.

Miraż
źródło
jakiej wersji DOS używasz? :) no dalej, podaj nam więcej informacji, jakie typy plików ... oczywiście szukasz sposobu na połączenie tych plików.
Artykuł jest edytowany
Mirage
2
DOS w systemach operacyjnych Windows NT (NT, 2000 i wszystko od XP) tak naprawdę nie jest DOS, to powłoka poleceń o nazwie „cmd.exe”. usunąłem tagi DOS, aby to odzwierciedlić.
quack quixote
przepraszam za to, naprawdę tego nie wiedziałem. Myślałem jako DOS
Mirage
1
na szczęście ostatnie ślady DOS zmarły w systemie Windows ME. :) ale nie martw się - większość nadal wywołuje wiersz poleceń systemu Windows „DOS”, więc to nie jest źle , po prostu niedokładne . ponieważ czasami używany jest prawdziwy DOS, usuwam znacznik DOS, aby były tylko prawdziwymi pytaniami DOS.
quack quixote

Odpowiedzi:

128

Nie chcę wpisywać nazwy wszystkich plików.

Łatwo tego uniknąć. Otwórz wiersz polecenia w tym folderze i wpisz następujące polecenie:

copy /b *.txt newfile.txt

Prasa Enter.

Teraz wszystkie pliki tekstowe w tym folderze uporządkowane według daty rosnącej zostaną scalone w jeden plik o nazwie newfile.txt.

Moim ostatecznym celem jest przechowywanie zawartości każdego pliku tekstowego w osobnej kolumnie arkusza Excel.

Oto samouczek, który może pomóc Ci osiągnąć „ostateczny cel”:

Scal wszystkie pliki CSV lub TXT w folderze w jednym arkuszu

Peter Mortensen
źródło
Czy można wstawić nowy znak wiersza po każdym pliku
Mirage
nie z tą metodą.
quack quixote
jakie są inne opcje. moim ostatecznym celem jest przechowywanie zawartości każdego pliku tekstowego w osobnej kolumnie arkusza programu Excel. Wszelkie pomysły
Mirage
@Mirage - zaktualizowałem moją odpowiedź zgodnie z Twoim komentarzem.
Problem polega jednak na tym, jak dodać znak końca do każdego pliku tekstowego. Obecnie niektóre pliki tekstowe są w tej samej paragrafie w scalonym pliku, więc excel umieść go w jednej kolumnie. LUB jeśli mogę najpierw dodać znak końca do wszystkich plików, a następnie wykonać operację scalania
Mirage
38

Aby dodać nową linię na końcu każdego skonkatenowanego pliku, użyj typezamiast w copynastępujący sposób:

type *.txt > newfile.txt
Echeban
źródło
5
OSTRZEŻENIE: W przypadku użycia typu * .txt> newfile.txt tekst jest powielany.
Malganis,
2
Usuń .txtz newfilei bam! Masz to.
fa wildchild
To niesamowita odpowiedź na łączenie plików dziennika lub innych rzeczy, które przeanalizujesz na drodze. W szczególności fakt, że można obejść się type x.log.* > merged.logbez pliku wsadowego. Nowe linie są dość łatwe w obsłudze.
Daniel Chapman,
1
Wow, typeprzeszedł długą drogę od DOS 3.3. Nie wiedziałem, że możesz używać masek plików. Kiedy to się stało?
niedz
32

Zakładając, że mówisz o dołączaniu plików tekstowych, copymożesz użyć polecenia, aby je połączyć:

copy file1+file2+file3 targetfile

Jeśli masz wiele plików, możesz zapętlić, dodając jeden plik na raz.

W przypadku plików binarnych dodaj /bopcję „ ”:

copy /b file1+file2+file3 targetfile

Zakłada się, że wiesz, że pliki binarne, z którymi pracujesz, można dołączać jeden po drugim; jeśli nie, otrzymasz zbiór bezużytecznych danych.

nik
źródło
5
Jest to bardzo przydatne, jeśli chcesz połączyć pliki w określonej kolejności.
kapex
copy Dokumenty
S Meaden
8

Uruchom następujące polecenie w wierszu polecenia:

for %f in (*.txt) do type "%f" >> output.txt
Abhishek Goel
źródło
1
To nie działa zgodnie z oczekiwaniami, cały tekst jest powielony woutput.txt
DavidPostill
3
Podpowiedź * .txt pasuje do output.txt
DavidPostill
@DavidPostill, zredagowałem odpowiedź zgodnie z twoimi obawami.
Saran
3

Poniższy plik .bat doda wszystkie pliki * .for, oprócz tego o nazwie XIT.for, do pustego pliku o nazwie MASTER.for

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

:)

Echeban
źródło
2
Niewielki zwrot powyżej: jeśli chcesz się upewnić, że pliki są konkatenowane alfabetycznie , powinieneś użyć: FOR / F %% G IN ('dir / b / o * .for') NIE JEŚLI "%% G" == „XIT.for” copy / A MASTER.for + „%% G” && echo. >> MASTER.for
Guido Domenici
Lubię to. Kolejnym usprawnieniem, którego potrzebowałem dzisiaj, jest wydrukowanie w pliku nagłówka pliku w celu oddzielenia plików wejściowych. for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
Curtis Price
Wiem, że użycie powłoki bash prawdopodobnie miałoby większy sens!
Curtis Price