Podemos substituir strings em um arquivo em lote usando o seguinte comando
set str="jump over the chair"
set str=%str:chair=table%
Essas linhas funcionam bem e mudam a string "pule sobre a cadeira" para "pule sobre a mesa". Agora quero substituir a palavra "cadeira" na string por alguma variável e não sei como fazer isso.
set word=table
set str="jump over the chair"
??
Alguma ideia?
command-line
batch-file
Faisal
fonte
fonte
Respostas:
Você pode usar!, Mas deve ter a chave ENABLEDELAYEDEXPANSION definida.
fonte
str
ele próprio for de expansão atrasada?set str=!str:chair=!word!!
não funciona corretamente."jump over the !word!"
.Você pode usar o seguinte pequeno truque:
A
call
não faz outra camada de expansão variável, tornando-se necessário citar os originais%
sinais, mas tudo funciona no final.fonte
%"jump over the "word%%%
. Esteja ciente de que o código em arquivos em lote e na linha de comando pode produzir resultados diferentes.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%'
Consegui usar a resposta de Joey para criar uma função:
Use-o como:
E essas funções na parte inferior do seu arquivo de lote.
E lembre-se de que você DEVE adicionar "SETLOCAL ENABLEDELAYEDEXPANSION" no início do seu arquivo em lote ou então nada disso funcionará corretamente.
fonte
Isso funciona bem
fonte
chair
e acrescenta a palavratable
, mas não troca as duas palavras. Tente substituir a palavraover
comunder
e você começajump the chairunder