Мы можем заменить строки в пакетном файле, используя следующую команду
set str="jump over the chair"
set str=%str:chair=table%
Эти линии работают нормально и меняют строку «перепрыгнуть через стул» на «перепрыгнуть через стол». Теперь я хочу заменить слово «стул» в строке некоторой переменной и не знаю, как это сделать.
set word=table
set str="jump over the chair"
??
Любые идеи?
command-line
batch-file
Фейсал
источник
источник
Ответы:
Вы можете использовать!, Но у вас должен быть установлен переключатель ENABLEDELAYEDEXPANSION.
источник
str
возник из-за отложенного расширения?set str=!str:chair=!word!!
не работает правильно."jump over the !word!"
.Вы можете использовать следующий небольшой трюк:
Это
call
вызывает еще один уровень расширения переменных, заставляя цитировать исходные%
знаки, но в конце концов все работает.источник
%"jump over the "word%%%
. Просто имейте в виду, что код в пакетных файлах и в командной строке может давать разные результаты.set word=table
set str="jump over the chair"
call set str=%%str:chair=%word%%%
echo %str%
set word1=chair
set word2=desk
set str="jump over the chair"
call set str=%%str:%word1%=%word2%%%
echo %str%'
Я смог использовать ответ Джои для создания функции:
Используйте это как:
И эти функции в нижней части вашего командного файла.
И помните, что вы ДОЛЖНЫ добавить «SETLOCAL ENABLEDELAYEDEXPANSION» в начало вашего командного файла, иначе ничего из этого не будет работать должным образом.
источник
Это отлично работает
источник
chair
и добавляет словоtable
, но не меняет два слова. Попробуйте заменить словоover
на,under
и вы получитеjump the chairunder