1

2 つのテキスト ファイルがあります。4 行ある file1.txt の内容を取り、file2.txt の最初の 4 行に追加したいと思います。file2.txt の最初の 4 行のすべてのレコードを上書きする必要がありますが、残りの元のコンテンツ (他の行) は保持します。

バッチまたは Windows プロンプトを使用してそれを行うにはどうすればよいですか?

4

6 に答える 6

3
copy file1.txt temp.txt
echo. >> temp.txt
more +5 file2.txt >> temp.txt
move /y temp.txt file2.txt

編集:「echo。>> temp.txt」命令を追加しました。これにより、temp.txtに改行が追加され、file2.txtの「クリーンな」マージが可能になります(file1.txtが改行で終わっていない場合) 。

于 2009-04-01T14:22:00.307 に答える
1

Gnutilsからcoreutilsを入手すると、cygwinをインストールしなくても、Cygwinで実行できる多くのことを実行できるようになります。次に、頭、尻尾、猫などを使用して、探していることを実行できます。

例えば

head -n 4 file2.txt

file2の最初の4行を取得します。

上にリンクされているページからzipを抽出し、binディレクトリから使用する必要のあるutilsを取得して、パス内のディレクトリに配置します。たとえば、以下の場合、mv、head、tailが必要です。組み込みのDOSmoveコマンドを使用することもできますが、オプションを少し変更する必要があります。

質問は少し不明確ですが、file2.txtの最初の4行を削除して、file1.txtに追加する場合は、次のようにすることができます。

head -n 4 file2.txt >> file1.txt
tail -n +5 file2.txt >> temp.txt
mv temp.txt file2.txt
于 2009-04-01T14:15:55.080 に答える
1

バッチだけでは、それができるかどうかわかりません。

Unix コマンドを使用すると、 Cygwinを使用して Windows で Unix コマンドを簡単に使用できます。

その場合、次のことが必要です。

#!/bin/bash
head -n 4 file1.txt > result.txt   # first 4 lines of file1
tail -n +5 file2.txt >> result.txt # append lines 5, 6, 7... of file2
mv result.txt file2.txt    # replace file2.txt with the result
于 2009-04-01T14:08:30.387 に答える
1

2 つのファイルの先頭にある 4 行がまったく同じ量のスペースを占めていない限り、ファイル全体を書き直さない限り、それはできません。

ファイルの任意の時点でデータを挿入または削除することはできません。既存のデータを上書きしたり (バイトごとに)、ファイルを切り捨てたり末尾に追加したりできますが、途中で削除または挿入することはできません。

したがって、基本的には次のことが必要です。

  • file1.txt の最初の 4 行で構成される新しいファイルを開始します。
  • file2.txt の最初の 4 行をスキップします。
  • file1.txt の残りを新しい file2.txt に追加します。

Unix のヘッド/テール コマンドを使用すると、これをかなり簡単に行うことができます。それが許容できる解決策であれば、Cygwinから取得できます。Windows Services for Unixの head/tail も機能する可能性があります。

于 2009-04-01T14:05:46.713 に答える
0

Windowsバッチ以外でスクリプトを作成した場合は、それを行うことができます。Windowsスクリプティングホストを使用したvbscriptまたはjscriptで実行できるはずです。それらのそれぞれには、あるファイルから行を取得し、別のファイルの行を上書きする方法があります。

于 2009-04-01T14:09:25.737 に答える
0

これを行うには、一時的な 3 番目のファイルを作成し、最初のファイルから行を取り出して一時ファイルに追加し、次に 2 番目のファイルを読み取り、キャリッジ リターンとラインフィードの 4 つのペアを読み取った後、残りを一時ファイルに書き込みます。 . 次に、2 番目のファイルを削除し、一時ファイルの名前を 2 番目のファイル名に変更します。

于 2009-04-01T14:09:34.113 に答える