カンマ区切りのCSVに対して、特定の文字列を置換したい(改行コード含む)


以下の仕様でWindows10向けバッチファイルを作ってほしいです。

1)カンマ含む任意の文字列11文字(例:AA,BB,CC,DD)に対して、2つ目のカンマを改行コードに変換したい。
2)改行コードはCR+LFとする。
3)対象ファイルは、バッチのあるフォルダにある、拡張子が.CSVのファイル全て。
4)変換結果は、一つ下にoutputフォルダを生成し、その下に出力する。
5)出力ファイル名は、入力ファイル名_out.csvとする。
6)対象フォルダ、出力ファイル名への付与文字列、置換対象文字列は、バッチ内の定義で変更できること。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2020/09/26 20:39:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:gm91

質問者から

GM912020/09/21 20:22:01

補足:

・自分の勉強用なので、バッチには適宜コメント入れてくれるとありがたいです。

・元ファイルはシリアル伝送のログファイルで、2桁の16進をASCII変換+カンマ区切りで記録しているのですが、ログ生成ツールがテキスト長さ固定で改行コードを挿入してしまうため、途中で伝送データが途切れて再開した時に、頭出しの位置がズレてしまいます。

→電文冒頭と末尾の文字列は固定なので、冒頭と末尾の間がカンマでつながっている箇所を見つけて改行コードを入れたい。

・テキストエディタで変換する、でもいいのですが、ファイルが大量にあるのでバッチで一括処理したい。

・元ファイルのサイズは100~300MBくらいです。

ベストアンサー

id:khurata No.2

回答回数35ベストアンサー獲得回数10

ポイント100pt

 コマンドプロンプトが終わろうとしている現在、DOSバッチで新規処理を書くのは気乗りのしない人が多いでしょう。
 せめて PowerShell で書くか、あるいは JScript、あるいは Windows 標準添付の C# で書く方が良いように思います。
 また、ファイルが大量に在るのであれば、ファイル名をプログラムにハードコーディングするのではなく、ファイルを格納するフォルダをパラメータで与える仕様の方が適切だと思います。

他2件のコメントを見る
id:khurata

「自身の置き場所」を基点として動作する仕様も「有り」と言えば有りですね。 プログラム自体をコピーしまくらなければならない気もしますが、それでも良いという場合は確かに有るでしょう。

2020/09/26 00:14:40
id:gm91

実行ファイル自体は大した容量にはならないと思いますので、対象フォルダにコピーして使うイメージで考えています。

2020/09/26 17:16:40

その他の回答1件)

id:Akaoru No.1

回答回数112ベストアンサー獲得回数20

 
ここは、検索質疑回答するコーナーです。
 
バッチファイルの作成は、プログラム技術者へ
 
正当な対価を支払って、業務委託するべき内容です。
 
 

id:gm91

質問文に語弊があったようで申し訳ないです。

バッチファイル作成云々はあくまで僕の知りたいことを具体的に示す為の例ですので、バッチファイル自体を発注したいわけではありません。

処理ができれば中身は何でもいいということであれば、テキストエディタで置換すればいいだけの話なので、ここで発注する必要はないですし。
その点は誤解なきようお願いいたします。

2020/09/24 23:22:30
id:khurata No.2

回答回数35ベストアンサー獲得回数10ここでベストアンサー

ポイント100pt

 コマンドプロンプトが終わろうとしている現在、DOSバッチで新規処理を書くのは気乗りのしない人が多いでしょう。
 せめて PowerShell で書くか、あるいは JScript、あるいは Windows 標準添付の C# で書く方が良いように思います。
 また、ファイルが大量に在るのであれば、ファイル名をプログラムにハードコーディングするのではなく、ファイルを格納するフォルダをパラメータで与える仕様の方が適切だと思います。

他2件のコメントを見る
id:khurata

「自身の置き場所」を基点として動作する仕様も「有り」と言えば有りですね。 プログラム自体をコピーしまくらなければならない気もしますが、それでも良いという場合は確かに有るでしょう。

2020/09/26 00:14:40
id:gm91

実行ファイル自体は大した容量にはならないと思いますので、対象フォルダにコピーして使うイメージで考えています。

2020/09/26 17:16:40
id:gm91

質問者から

GM912020/10/11 01:11:27

とりあえずC#で色々試してみようかなと思います。

ぼちぼち締め切ります。

→だいぶブサイクな感じになりましたが、だいたいできるようになりました。

ありがとうございました。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません