web-dev-qa-db-ja.com

バッチファイルを使用して複数のcsvファイルをマージする

バッチファイルを使用して、複数のCSVファイル[同じディレクトリ]を1つにマージすることは可能ですか?もしそうなら、どうすればこれを行うことができますか?

それはどのASCIIファイルにも当てはまると思いますか?

7
D. Caan
copy *.csv merged.csv

または

copy file1+file2+… merged.csv

ヘッダーの重複を回避するより洗練されたスクリプトについては、 バッチ結合CSVヘッダーの削除 を参照してください。

10
ths

どの行がどのファイルから来たのか知りたい場合があります。使用するだけなら

コピー* .csv merged.csv

どの行がどのファイルからのものかを知る方法がなく、ファイルが次々に貼り付けられます。

解決策には、grep.exeユーティリティの使用が含まれます。次のような場所から入手できます: http://gnuwin32.sourceforge.net/packages/grep.htm

それを取得したら(そしてその場所をPATHに追加したら)、csvファイルがあるフォルダーに移動し、コマンドシェルでこれを実行します。

grep -e ^ a * $ * .csv> t.txt

その結果、すべてのファイルがt.txtに追加され、ファイル名が各行の先頭に追加され、ファイルのテキストから「:」で区切られます。

例:

file1.csv

this、line

から

ファイル、1

file2.csv

this、line

から

ファイル、2

grepコマンドを実行すると、t.txtには次のようになります。

file1.csv:this、line

file1.csv:is、from

file1.csv:file、1

file2.csv:this、line

file2.csv:is、from

file2.csv:file、2

T.txt .t.csvを変更し、Excelで開きます。次のステップは、最初の列を取得し、区切り文字として「:」を使用して2つの列に分割することです(データ->列へのテキスト->区切り文字で「その他」を選択し、フィールドに「:」を入力します)。

注意してください!列Aと列Bの間に新しい列を追加して、列Aが2つの列に分割されたときに、列Bの内容が上書きされないようにします。

最初のcsvフィールドのテキストに「:」が含まれている場合、列Aが3つ以上の列に分割されるため、これは少し難しくなることに注意してください。

また、重複ヘッダーに関するコメントもここにあります。

1
user2978183