• 締切済み

バッチファイルで文字列削除について

バッチファイルで文字列削除について 以下の出力結果のファイルの中身です a.txt "DisplayName"="xxxxxxxxxxxxxx" "DisplayName"="と最後の"の部分を削除したいのですが Googleで色々調べたのですが、わかりません。 勉強不足で申し訳ありませんが、教えて頂けたら幸いです。 よろしくお願いします。

みんなの回答

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

No.1です。No.2さんがご指摘の通り、callを使わなくても可能でした。 以下のとおり訂正しますね。 echo off for /f "tokens=2 delims==" %%a in ( a.txt ) do set ans=%%~a echo %ans%

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

条件になっているかどうか微妙? DisplayNameが何回出現するかどうか予測できるかどうかで変わると思う。つまり、値に何が含まれているかは、予期しない値であれば、取得すにあたいしないものと、通常かんがえるのが普通。それでIFで条件分岐をつけるかどうか決めるといいでしょう。 せっかく提示してくれたので、それを使って、 for /f "usebackq tokens=2 delims==" %a in (`findstr /r "\<DisplayName\> \<=\>" a.txt`) do (set att=%~a) echo att=[%att%] と言う感じですかね。findstr の正規表現等を使うことで、対象を絞ることと、その後、IF文を使えばもっと絞れます。 ラベルに飛ばしてから、設定するのは必要ない。for ループが終了すれば、attにセットされている。使うときは、forループのその変数を別トランザクションで処理をする時だけ。

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.1

a.txtの条件がはっきりしないですがサンプルを作ってみました。 a.txt には "DisplayName"="xxxxxxxxxxxxxx" の1行だけで、xxxxxxxxxxxxxxの部分を取り出したい。 xxxxxxxxxxxxxxは長さや内容が不定(ただし、=や"などは含まれない)という条件です。 環境変数 ans に取り出した文字列が入っています。 :------------------------------------------------------------------ echo off for /f "tokens=2 delims==" %%a in ( a.txt ) do call :sub %%a echo %ans% exit /b :sub set ans=%~1 goto :EOF

関連するQ&A