web-dev-qa-db-ja.com

バッチファイルの文字列置換

次のコマンドを使用して、バッチファイル内の文字列を置き換えることができます

set str="jump over the chair"
set str=%str:chair=table%

これらの行は正常に機能し、文字列「jump over the chair」を「jump over the table」に変更します。ここで、文字列内の単語「椅子」を何らかの変数に置き換えたいのですが、その方法がわかりません。

set Word=table
set str="jump over the chair"
??

何か案は?

87
Faisal

!を使用できますが、ENABLEDELAYEDEXPANSIONスイッチを設定する必要があります。

setlocal ENABLEDELAYEDEXPANSION
set Word=table
set str="jump over the chair"
set str=%str:chair=!Word!%
69
Vicky

次の小さなトリックを使用できます。

set Word=table
set str="jump over the chair"
call set str=%%str:chair=%Word%%%
echo %str%

そこにあるcallは、変数展開の別のレイヤーを引き起こし、元の%記号を引用する必要がありますが、すべてうまくいきます。

74
Joey