2012-04-27 91 views
3

我需要爲一批ascii(.asc)文件添加一個簡單的單行標題,長度可變(每行數百萬行),並使用相同的文件名保存。我有大量的這些文件。這是最好的與Windows批處理文件?如果有的話,誰能幫忙解釋一下?將批量添加到ASCII文本文件的可變長度

謝謝高級 - 我知道這應該是簡單,已經尋找一個答案,但沒有發現任何東西,似乎很正確...

回答

1

正如你只能將一些東西附加到一個文件,你不能這樣做用簡單的操作爲文本添加前綴。
但是你可以:

  1. 副本的第一個你的頭到一個新文件(copy header.template header.tmp
  2. 原始文件複製到新文件(type original.txt >> header.tmp
  3. 刪除原始文件(del original.txt
  4. 將您的新文件重命名爲原始名稱(ren header.tmp original.txt

EDI T:

for %%F in (*.txt) DO (
    echo Working on %%F 
    copy header.template newFile.tmp 
    type "%%~F" >> newFile.tmp 
    del "%%~F" 
    copy newFile.tmp "%%~F" 
) 
+0

謝謝傑布,這看起來不錯...顯示我的無知,但我如何讓那隻蝙蝠將每個文件用作'原始',然後移動到目錄中的下一個文件並執行相同的操作? – MGC77 2012-04-27 09:04:42

+0

在您的所有文件中添加一個FOR循環 – jeb 2012-04-27 09:39:23

+0

感謝Jeb-在初始測試後,這看起來很完美。我知道這是類似的東西,但需要幫助...再次感謝。 – MGC77 2012-04-27 09:48:38

1

如果不重寫整個文件,沒有辦法做到這一點。

未經測試的批處理文件:

​​

按照對方的回答(S),多個文件可以這樣做(其實這次測試):

for %%F in (*.asc) DO (
    move "%%F" tmp.txt 
    echo header > "%%F" 
    type tmp.txt >> "%%F" 
    del tmp.txt 
) 
+0

+1,但是你應該刪除'source.asc.tmp'而不是剛創建的'source.asc' – jeb 2012-04-27 08:57:17

+0

啊,謝謝,我在電話中間在我的電話上寫了這個:) – dwurf 2012-04-27 09:03:51

+0

謝謝dwurf,但是怎麼做我得到該批處理文件在多個文件上運行,即通過50 .asc文件的目錄運行? – MGC77 2012-04-27 09:12:37

1

儘管傑布的回答解決了這個問題,我認爲下面的方法在運行大量文件時運行得更快,因爲它使用更少的命令和「批量重命名」操作:

for %%F in (*.txt) do (
    echo Working on %%F 
    copy header.template + "%%F" "%%~nF.tmp" 
) 
move /Y *.tmp *.txt 
+0

是的,這是更短的,可能更快,但它也需要更多的磁盤空間,因爲它暫時加倍處理'.txt'文件佔用的空間。 (是的,我知道:「空間很便宜」等等,但我仍然發現值得一提的細節)。但是,當然,它很可能運行在任何現代Windows PC上,因此它是+1,只有一個音符:我會將'/ B'開關添加到'copy'命令以避免在目標文件末尾添加令人討厭的'0x1A'。 – 2012-05-08 06:24:55

相關問題