3

ワールド・ワイド・ウェブを高低で検索しましたが、問題の解決策が見つからないようです! 結合したい複数のテキスト ファイルがあります。

なぜやろうとしているのかを正確に説明するよりも、例を示す方が簡単です。

最初のファイルは次のようになります。

John
Paul
Mark
Sam
Herold

このファイルは「主キー」として機能します。

残りのファイルには、このように各項目のデータが含まれています。プログラムは、このデータを 1 時間ごとに新しいファイルに生成します。

4
10
20
5
200

私はWindowsバッチファイルに最も精通しているので、次のようなものを書き込もうとしました:

for /f "tokens=*" %%A in (file1.txt) do 
    (for /f "tokens=*" %%B in (file2.txt) do (echo %%A,%%B>>combined.txt))

残念ながら、それはすべての人にすべての値を書き込みます。これが期待どおりに機能する場合、最終結果は次のようになります。

John,4,2,6,9,1,2,5,6,12,51,53,3,6,7,8,1,4,7,2,743,21,4,7,5
Paul,10,5,6,1,7,9,34,56,1,76,48,23,222,12,54,67,23,652,1,6,71,3,6,4

等々。

私が使用しているソフトウェアは、この形式でデータを表示し、変更できません。私はあらゆる提案を受け入れます。

4

3 に答える 3

11

標準ハンドルを介して、バッチプログラムで複数の入力ファイルを読み取ることができます。0はStdin、1はStdout、2はStderrですが、これによりハンドル3〜9が使用可能になります。以下のバッチファイルは、2つのファイルの内容とファイルをマージします。もちろん、この方法では最大8つのファイルを組み合わせることができます。

@echo off
setlocal EnableDelayedExpansion
Rem First file is read with FOR /F command
Rem Second file is read via standard handle 3
3< file2.txt (for /F "delims=" %%a in (file1.txt) do (
   Rem Read next line from file2.txt
   set /P line2=<&3
   Rem Echo lines of both files
   echo %%a,!line2!
))

詳細はこちら:http ://www.dostips.com/forum/viewtopic.php?f = 3&t = 3126

于 2013-01-25T13:51:16.983 に答える
1

unix コマンドの貼り付けは、おそらくあなたが探しているものです。StackOverflow に関するこの質問も参照してください。

于 2013-01-25T12:32:27.503 に答える
1

あなたはただ行うことができます:

paste -d, file*.txt > combined.txt

あなたがpaste利用できる場合。cygwin をインストールするか、*nix マシンで作業する必要がある場合があります。(あなたは、すべての提案に対してオープンであると言いました!) これは、順番に名前が付けられているデータ ファイルに依存しています。順序を微調整したい場合は、グロブを使用する代わりに綴ることができます。

于 2013-01-25T12:32:53.993 に答える