Remplacement de chaîne dans le fichier batch

Nous pouvons remplacer des chaînes dans un fichier batch 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 "sauter par-dessus la chaise" en "sauter par-dessus la table". Maintenant, je veux remplacer le mot "chaise" 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?

74
demandé sur Péter Török 2010-05-05 14:43:23

2 réponses

Vous pouvez utiliser !, mais vous devez avoir le commutateur ENABLEDELAYEDEXPANSION ensemble.

setlocal ENABLEDELAYEDEXPANSION
set word=table
set str="jump over the chair"
set str=%str:chair=!word!%
59
répondu Vicky 2010-05-05 10:52:32

Vous pouvez utiliser le petit truc suivant:

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

Le call provoque une autre couche d'expansion variable, ce qui rend nécessaire de citer les signes % originaux, mais tout fonctionne à la fin.

61
répondu Joey 2010-05-05 13:17:22