題 用於連接多個文件的命令行或批處理cmd


我在一個目錄中有50個文本文件。

是否有Windows命令行方法將這些文件連接到一個文件中?

我在用 Windows Vista

我不想輸入所有文件的名稱。


91
2018-02-22 01:59


起源


您使用的是哪個版本的DOS? :)來吧,給我們一些更多的信息,什麼文件類型......你顯然正在尋找合併這些文件的方法。
該帖子已編輯 - Mirage
基於Windows NT的操作系統(NT,2000,以及XP以來的所有東西)中的DOS確實不是DOS,它是一個名為“cmd.exe”的命令shell。刪除DOS標籤以反映這一點。 - quack quixote
對不起,我真的不知道。我在想DOS - Mirage
謝天謝地,DOS的最後遺跡在Windows ME中死亡。 :)但不用擔心 - 大多數人仍然稱之為Windows命令行“DOS”,所以事實並非如此 錯誤,只是 不準確。由於有時仍然使用真正的DOS,我正在清理DOS標籤只是真正的DOS問題。 - quack quixote


答案:


我不想輸入所有名稱   文件。

這很容易避免。在此文件夾中打開命令提示符並鍵入以下命令:

copy /b *.txt newfile.txt

輸入

現在,您將此文件夾中的所有文本文件按日期升序排序合併到一個名為new​​file.txt的文件中。

我的最終目標是存儲   每個文本文件的內容在一個單獨的   Excel工作表的列。

這是一個可以幫助您實現“最終目標”的教程:

合併一個工作表中的文件夾中的所有CSV或TXT文件


120
2018-02-22 02:27



是否可以在每個文件後插入換行符 - Mirage
不是用這種方法。 - quack quixote
什麼是其他選擇。我的最終目的是將每個文本文件的內容存儲在Excel工作表的單獨列中。有任何想法嗎 - Mirage
@Mirage - 根據你的評論更新了我的答案。
但問題是如何將endline字符添加到每個文本文件中。目前,某些文件文本在合併文件中位於相同的段落中,因此excel將其放在一列中。或者,如果我可以首先將一些結束字符附加到所有文件,然後執行合併操作 - Mirage


要在每個連接文件的末尾添加newLine,請使用 type 代替 copy, 如下:

type *.txt > newfile.txt

36
2018-04-11 08:55



警告:使用時 鍵入* .txt> newfile.txt,文本是重複的。 - Malganis
去掉 .txt 從 newfile 和巴姆!你有它。 - fa wildchild
這是一個很棒的答案,用於連接日誌文件或其他你將解析的東西。特別是你可以做的事實 type x.log.* > merged.log 沒有批處理文件。新線很容易處理。 - Daniel Chapman
哇, type 自DOS 3.3以來已經走了很長的路。我不知道你可以使用文件掩碼。什麼時候發生的? - Sun


假設您正在談論附加文本文件,那麼 copy 命令可用於將它們附加在一起:

copy file1+file2+file3 targetfile

如果您有許多文件,則可以通過一次附加一個文件來循環。

對於二進製文件,請添加'/b' 選項:

copy /b file1+file2+file3 targetfile

這假設您知道您正在使用的二進製文件可以背靠背附加;如果沒有,你將得到一堆無用的數據。


30
2018-02-22 02:08



如果您需要按特定順序連接文件,這非常有用。 - kapex


在命令提示符中運行以下命令:

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

8
2017-08-10 08:06



這沒有按預期工作,所有文本都重複 output.txt - DavidPostill♦
提示* .txt匹配output.txt - DavidPostill♦
@DavidPostill,我根據您的關注編輯了答案。 - Saran


以下.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

:)


3
2018-05-12 11:52



稍微扭曲一下:如果想要確保文件連接在一起 按字母順序,應該使用:FOR / F %% G IN('dir / b / o * .for')如果不是“%% G”==“XIT.for”複製/ A MASTER.for +“%% G” && echo。 >> MASTER.for - Guido Domenici
我喜歡這個。我今天需要的另一個調整是將文件名標題打印到文件中以分隔輸入文件。 for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat ) - Curtis Price
我知道使用bash shell可能更有意義! - Curtis Price