
前提・実現したいこと
バッチファイル(.bat)でのfor文の中での文字列置換を行う際
CSVファイルの後ろから16文字取得し、
9文字目と10文字目の間にスペースを入れる処理を行いたいです
置換前) "abcdefghijklmn"
置換後) "abcdefgh ijklmn"
そして可能であれば、以下のnew.csvに書き込むのではなく
old.csvで直接文字列を探して置換できるようにしたいと思っています。
該当のソースコード
bat
1@echo off 2SETLOCAL enabledelayedexpansion 3 4set filepath=C:\hoge\old.csv 5 6for /f %%d in (%filepath%) do ( 7 set line=%%d 8 set before=!line:~-16! 9 set after=!line:~-16,9! !line:~-7! 10 11 echo !line:%before%=%after%! >> new.csv
試したこと
現状、上記コードでバッチを実行するとnew.csv
にline:=
という文字がfor文の回数入るだけでした
遅延環境変数の問題かと思い、
before
とafter
を%before%
じゃなく!before!
にしたりも試しましたが
結果はbeforeafter
と入力されるだけでした
もう一つ試したこととして片方だけ環境変数では文字列
echo !line:"abcdefghijklmn"=%after%! >> new.csv
こちらと!after!
で試してみましたが
%%だと文字列が消えて!!だとafter
という文字列が入力されました
バッチファイル作成は初めてで至らないところが多いですが知恵をお貸しいただければ幸いです。
補足情報(FW/ツールのバージョンなど)
Windows10
PostgreSQL11



回答3件
あなたの回答
tips
プレビュー