Ответ 1
Вы можете использовать!, но у вас должен быть установлен переключатель ENABLEDELAYEDEXPANSION.
setlocal ENABLEDELAYEDEXPANSION
set word=table
set str="jump over the chair"
set str=%str:chair=!word!%
Мы можем заменить строки в пакетном файле, используя следующую команду
set str="jump over the chair"
set str=%str:chair=table%
Эти строки отлично работают и меняют строку "прыгать через стул", чтобы "перепрыгнуть через стол". Теперь я хочу заменить слово "стул" в строке некоторой переменной, и я не знаю, как это сделать.
set word=table
set str="jump over the chair"
??
Любые идеи?
Вы можете использовать!, но у вас должен быть установлен переключатель 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%
call
вызывает другой слой расширения переменной, что делает необходимым процитировать оригинальные знаки %
, но все это заканчивается в конце.
c: > replace.bat "123def789" "def" "456"
replace.bat
setlocal enabledelayedexpansion
set data=%1
set search=%2
set replace=%3
set "data=!data:%search%=%replace%!"
echo %data%
REM Use %data% here before calling endlocal.
endlocal