あるテキストファイルの3行目(の2トークン目)だけを変数hogeに代入したいのですが
set hensu=.\hoge\hoge.txt for /f "usebackq tokens=2" %%A in (`findstr /n /r "." %hensu% ^| findstr /r "^3:"`) do set hoge=%%A
このようにfindstrと正規表現を用いて3行目を抽出しようとすると、3行目、13行目、23行目・・・を代入していき、最終的に最後のn3行目を代入して処理を終了してしまいます。
しかし、
for /f "usebackq tokens=2" %%A in (`findstr /n /r "." .\hoge\hoge.txt ^| findstr /r "^3:"`) do set hoge=%%A
このように直接hoge.txtのパスを記述すると行頭「3:」のみを代入する理想の処理を行います。
findstr /n /r "." %hensu% | findstr /r "^3:"
このようにfindstr単体と変数で実行する分には行頭が「3:」である3行目を出力してくれるのですが・・・。
「^3:」で行頭が「3:」つまり3行目を抽出するつもりだったのですが、一定条件下でうまくいかない原因がわかりません。
for文と変数や正規表現の相性が悪いのかなど自分なりに探ってみたのですがお手上げです。。
仕様なのか、解決策があるのか、ご教授いただければ幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/13 01:32