Замена строки в пакетном файле


мы можем заменить строки в пакетном файле с помощью следующей команды

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

эти строки отлично работают и меняют строку "перепрыгнуть через стул" на "перепрыгнуть через стол". Теперь я хочу заменить слово "стул" в строке с переменной и я не знаю, как это сделать.

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

какие идеи?

2 74

2 ответа:

вы можете использовать !, но у вас должен быть установлен переключатель ENABLEDELAYEDEXPANSION.

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

вы можете использовать следующий трюк:

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

The call там вызывает еще один слой переменного расширения, что делает необходимым цитировать оригинал % знаки, но все это работает в конце концов.