文字列、検索、置換の 3 つの変数があります。%string% の %search% を %replace% に置き換えたいです。
これは機能しますが、難しい文字が必要です。
SET modified=%string:morning=evening%
これはフォーラムでの回答のようですが、機能しません。行全体を %modified% に格納するだけです
SET modified=!string:%search%=%replace%!
文字列、検索、置換の 3 つの変数があります。%string% の %search% を %replace% に置き換えたいです。
これは機能しますが、難しい文字が必要です。
SET modified=%string:morning=evening%
これはフォーラムでの回答のようですが、機能しません。行全体を %modified% に格納するだけです
SET modified=!string:%search%=%replace%!
!
フォーマットは遅延展開を行っています。変数%
はすぐに展開されますが、!
変数は必要な場合にのみ展開されます。これはバッチ ファイルでのみ機能すると思います。そのため、コマンド ラインで直接実験している場合、バッチ ファイルを実行している場合と同じ動作は得られません。
!
次のように、表記法を使用する前に、バッチ ファイルで遅延展開を有効にしてください。
SETLOCAL ENABLEDELAYEDEXPANSION
SET string=This morning
SET search=morning
SET replace=evening
SET modified=!string:%search%=%replace%!
ECHO %modified%
ENDLOCAL
これは反響しThis evening
ます。