9

変数が使用されている場合、このバッチ ファイルで部分文字列の置換を行うのに問題があります。具体的には!オリジナル! 変数が指定されています。リテラル文字列の場合は正常に動作します。ただし、これは私の使用法には適していません。

setlocal ENABLEDELAYEDEXPANSION
set original=chair
set replacement=table
set str="jump over the chair"
set str=%str:!original!=!replacement!%

よろしくお願いいたします。

4

2 に答える 2

16

を使用すると、次のようcallに、を必要とせずにこれを行うことができます。setlocal enabledelayedexpansion

call set str=%%str:%original%=%replacement%%%

注:これは最初に解析されますcall set str=%str:chair=table%

于 2012-08-10T01:19:51.540 に答える
4

展開順序が逆になっています。

解析時に通常の (パーセント) 展開が発生する (1 番目)
実行時に遅延 (感嘆符) 展開が発生する (2 番目)

検索と置換を実行する前に、検索と置換の用語を展開する必要があります。あなたが望んでいるのは:

set str=!str:%original%=%replacement%!
于 2012-08-09T23:50:08.387 に答える