Remplacement de chaîne dans un fichier de commandes

Nous pouvons remplacer des chaînes dans un fichier de commandes en utilisant la commande suivante

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

Ces lignes fonctionnent bien et changent la chaîne “saute par-dessus la chaise” pour “sauter par-dessus la table”. Maintenant, je veux remplacer le mot “chair” dans la chaîne par une variable et je ne sais pas comment le faire.

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

Des idées?

Vous pouvez utiliser!, Mais vous devez avoir le commutateur ENABLEDELAYEDEXPANSION défini.

 setlocal ENABLEDELAYEDEXPANSION set word=table set str="jump over the chair" set str=%str:chair=!word!% 

Vous pouvez utiliser le petit truc suivant:

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

L’ call là provoque une autre couche d’expansion variable, ce qui rend nécessaire de citer les signes % origine, mais tout fonctionne à la fin.