Podemos reemplazar cadenas en un archivo por lotes usando el siguiente comando
set str="jump over the chair"
set str=%str:chair=table%
Estas líneas funcionan bien y cambian la cadena "saltar sobre la silla" por "saltar sobre la mesa". Ahora quiero reemplazar la palabra "silla" en la cadena con alguna variable y no sé cómo hacerlo.
set word=table
set str="jump over the chair"
??
¿Algunas ideas?
command-line
batch-file
Faisal
fuente
fuente

Respuestas:
Puede usar!, Pero debe tener configurado el interruptor ENABLEDELAYEDEXPANSION.
fuente
strsí mismo proviene de una expansión retrasada?set str=!str:chair=!word!!no funciona correctamente."jump over the !word!".Puedes usar el siguiente pequeño truco:
El
callallí provoca otra capa de expansión variable, por lo que es necesario citar los%signos originales, pero todo funciona al final.fuente
%"jump over the "word%%%. Solo tenga en cuenta que el código en archivos por lotes y en la línea de comando puede producir resultados diferentes.set word=tableset str="jump over the chair"call set str=%%str:chair=%word%%%echo %str%set word1=chairset word2=deskset str="jump over the chair"call set str=%%str:%word1%=%word2%%%echo %str%'Pude usar la respuesta de Joey para crear una función:
Úselo como:
Y estas funciones al final de su archivo por lotes.
Y recuerde que DEBE agregar "SETLOCAL ENABLEDELAYEDEXPANSION" al principio de su archivo por lotes o nada de esto funcionará correctamente.
fuente
Esto funciona bien
fuente
chairy agrega la palabratable, pero no intercambia las dos palabras. Intente reemplazar la palabraoverconundery obtendrájump the chairunder