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
str
sí 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
call
allí 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=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%'
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
chair
y agrega la palabratable
, pero no intercambia las dos palabras. Intente reemplazar la palabraover
conunder
y obtendrájump the chairunder