batファイルで各行毎に特定の文字数毎に文字の挿入を行いたいです。
対象はtxtファイルで、出来ればcsvファイルとして出力したいと考えています。
例)
hoge.txt
aaaaaaaaaa
bbbbbbbbbb
↓
hoge.csv
aa,aaaaaa,aa
bb,bbbbbb,bb
のように、先頭から2文字目と8文字目にカンマを入れ、csvとして出力したいです。
どのようにしたら実現できるでしょうか?
また、文字列は10文字の固定長とお考えください(8文字に満たない等はない)。
特定の行が8文字未満(2文字未満?)だったらどうする想定でしょうか?
情報不足で申し訳ございません。
全行固定長(今回は10文字)となっているので想定しておりませんでした。
その場合は次の行に処理が移れればと考えています。
pwsh -ex ByPass -c "cat '.\hoge.txt'|%{$_ -replace '^.{8}', '$0,' -replace '^.{2}', '$0,'} > .\hoge.csv"
すいませんが、これはPowershellのコマンドという認識でよろしいでしょうか
出来ればbatファイルでの実行としたいのですがそちらは難しいということでしょうか?
実際に試すのは明日となってしまうので頓珍漢な質問かもしれませんがご容赦下さい。
複雑な処理はwsh(vbs)とかのほうが確実で楽だと思いますがどうしても標準のbatにこだわるのでしょうか?
バッチはプログラミングするものではなく他のコマンドを呼び出すものです。
まるで sed や xargs を使わない縛りでシェルスクリプトを書くようなことをしなくても、複雑な処理は適したコマンドを使えばいいし、無ければ PowerShell を呼び出せばいいし、そもそも最初から ps1 を書くほうが楽です。
出来ればbatが良いと考えていますがやはり難しいでしょうか?
do inで各行毎の指定文字数にカンマ入れるだけ(それがよくわからなかったのですが…)と考えていたので正直予想していませんでした
そういう宗派なら仕方がありません。
次のページを見てください。
https://www.upken.jp/kb/kZwpzAqblKfZDjtMXuWuwioeExKNdE.html
ありがとうございます。
今回はbatファイルでの実行を想定していますが、時間が空けばpwshも試してみたいと思います。
すみませんが実際に試すのは明日のため、そこで想定動作の確認が取れるまでは回答完了とはしないでおきます。
回答1件
あなたの回答
tips
プレビュー