プロが教えるわが家の防犯対策術!

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

以下の出力結果のファイルの中身です

a.txt
"DisplayName"="xxxxxxxxxxxxxx"

"DisplayName"="と最後の"の部分を削除したいのですが
Googleで色々調べたのですが、わかりません。
勉強不足で申し訳ありませんが、教えて頂けたら幸いです。
よろしくお願いします。

A 回答 (3件)

No.1です。

No.2さんがご指摘の通り、callを使わなくても可能でした。
以下のとおり訂正しますね。


echo off
for /f "tokens=2 delims==" %%a in ( a.txt ) do set ans=%%~a
echo %ans%
    • good
    • 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ループのその変数を別トランザクションで処理をする時だけ。
    • good
    • 0

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A