CSVファイルの指定した列を抽出するバッチファイル [コンピュータ]
CSVファイルの指定した列を抽出するバッチファイル
2023/12/06
WindowsのバッチファイルでCSVファイルの特定列のみ取り出して使いたくなってしまった場合。
今回の作成例ではCSVファイルの1列目、3列目、4列目が必要なため、抜き出して別ファイルに保存する。
バッチ実行前のイメージ「●,2,3,4,●,●,●,●,9,●」
バッチ実行後のイメージ「●,3,4」
CSVファイル内に空データ列があるとそこを飛ばして処理してしまうので、事前に空データ部分に適当なデータ●とかを入れておく。(2023/12/05のメモ参照)
元のcsvファイル名を、input.csv
処理後のcsvファイル名を、output.csv
バッチファイルでの処理内容としては
1、CSVファイルから1行取り出して
2、1列目、3列目、4列目のデータを別ファイルに書き込む
3、最後の行になるまで繰り返す
バッチファイル
----------
@echo off
setlocal enabledelayedexpansion
type nul>output.csv
for %%f in (input.csv) do (
for /f "tokens=1,3,4 delims=," %%a in (%%f) do echo %%a,%%b,%%c>>output.csv
)
pause
----------
違う列を取り出したい場合は、tokens=1,3,4 と echo %%a,%%b,%%c 辺りをいじくって
tokens=1,3,4,7,8,9 とか echo %%a,%%b,%%c,%%d,%%e,%%f とかにしてみる。
あとがき
素直にエクセルとか専用ソフトとかで処理すればいいかもだが何らかの理由でバッチファイルしか使えない場合のためにメモを残す。
2023/12/06
WindowsのバッチファイルでCSVファイルの特定列のみ取り出して使いたくなってしまった場合。
今回の作成例ではCSVファイルの1列目、3列目、4列目が必要なため、抜き出して別ファイルに保存する。
バッチ実行前のイメージ「●,2,3,4,●,●,●,●,9,●」
バッチ実行後のイメージ「●,3,4」
CSVファイル内に空データ列があるとそこを飛ばして処理してしまうので、事前に空データ部分に適当なデータ●とかを入れておく。(2023/12/05のメモ参照)
元のcsvファイル名を、input.csv
処理後のcsvファイル名を、output.csv
バッチファイルでの処理内容としては
1、CSVファイルから1行取り出して
2、1列目、3列目、4列目のデータを別ファイルに書き込む
3、最後の行になるまで繰り返す
バッチファイル
----------
@echo off
setlocal enabledelayedexpansion
type nul>output.csv
for %%f in (input.csv) do (
for /f "tokens=1,3,4 delims=," %%a in (%%f) do echo %%a,%%b,%%c>>output.csv
)
pause
----------
違う列を取り出したい場合は、tokens=1,3,4 と echo %%a,%%b,%%c 辺りをいじくって
tokens=1,3,4,7,8,9 とか echo %%a,%%b,%%c,%%d,%%e,%%f とかにしてみる。
あとがき
素直にエクセルとか専用ソフトとかで処理すればいいかもだが何らかの理由でバッチファイルしか使えない場合のためにメモを残す。
コメント 0