3

可変長 (数百万行ごと) の ascii (.asc) ファイルのバッチに単純な 1 行のヘッダーを追加し、同じファイル名で保存する必要があります。これらのファイルが多数あります。これは Windows バッチ ファイルで行うのが最適ですか? もしそうなら、誰かがその方法を説明するのを助けることができますか?

事前に感謝します-これは簡単なはずであり、答えを検索しましたが、まったく正しいと思われるものは見つかりませんでした...

4

3 に答える 3

1

ファイル全体を書き換えずにこれを行う方法はありません。

テストされていないバッチ ファイル:

move source.asc source.asc.tmp
echo "header" > source.asc
type source.asc.tmp >> source.asc
del source.asc.tmp

他の回答によると、複数のファイルを次のように実行できます(今回は実際にテストされています):

for %%F in (*.asc) DO (
    move "%%F" tmp.txt
    echo header > "%%F"
    type tmp.txt >> "%%F"
    del tmp.txt
)
于 2012-04-27T08:43:12.007 に答える
1

ファイルに何かを追加することしかできないため、単純な操作でテキストにプレフィックスを付けることはできません。
でも君ならできる:

  1. 最初にヘッダーを新しいファイルにコピーします ( copy header.template header.tmp)
  2. 元のファイルを新しいファイルにコピーします ( type original.txt >> header.tmp)
  3. 元のファイルを削除します ( del original.txt)
  4. 新しいファイルの名前を元の名前に変更します ( ren header.tmp original.txt)

編集:

for %%F in (*.txt) DO (
  echo Working on %%F
  copy header.template newFile.tmp
  type "%%~F" >> newFile.tmp
  del "%%~F"
  copy newFile.tmp "%%~F"
)
于 2012-04-27T08:42:37.530 に答える
1

jeb の回答はこの質問を解決しましたが、以下の方法は、使用するコマンドが少なく、「一括名前変更」操作を使用するため、多数のファイルでより高速に実行されるはずです。

for %%F in (*.txt) do (
   echo Working on %%F
   copy header.template + "%%F" "%%~nF.tmp"
)
move /Y *.tmp *.txt
于 2012-04-28T01:36:16.257 に答える