バッチファイルでテキストファイルの中身を取得します。
テキストファイルはカンマ区切りでレコードによっては値の入らないフィールドがあります。
問題は、値の入らないフィールドがフィールドが存在する場合、そのレコードのそれ以降のフィールドが
ズレて取得されてしまう点です。
例えば、下記のテキストファイルの中身を取得する場合、
【テキストファイル(data.txt)の内容】
名前,部署1,部署2,役職,年齢
山田,営業1課,営業2課,社員,25,
鈴木,営業1課,,係長,30,
.
.
.
「役職」項目を取得します。
rem 「山田」の役職を取得 for /f "tokens=1-5 delims=," %%i in ('findstr "山田", data.txt') do ( echo %%l )
以下の様に出力されます。
【結果】 社員
しかし、「鈴木」レコードで「役職」項目を取得する場合は
rem 「山田」の役職を取得 for /f "tokens=1-5 delims=," %%i in ('findstr "鈴木", data.txt') do ( echo %%l )
以下の様に出力されます。
【結果】 30
「鈴木」レコードでは部署2がnullのため変数%%lに値がセットされず、年齢がセットされました。
改善方法としてはテキストファイルの「,,」を「,null,」と書き換えれば正常動作をしますが、
可能であれば元のテキストファイルの形式を崩さずに、「,,」と区切り文字が続くフィールドがあっても、そうでないフィールドと同じ変数にセットしたいです。
ご存知の方、お教え頂けますでしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/21 04:50