Замена строки в командном файле - PullRequest
84 голосов
/ 05 мая 2010

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

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

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

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

Есть идеи?

Ответы [ 3 ]

72 голосов
/ 05 мая 2010

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

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

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

68 голосов
/ 05 мая 2010

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

setlocal ENABLEDELAYEDEXPANSION
set word=table
set str="jump over the chair"
set str=%str:chair=!word!%
0 голосов
/ 25 февраля 2019

отлично работает

@echo off    
set word=table    
set str=jump over the chair    
set rpl=%str:chair=%%word%    
echo %rpl%
...