web-dev-qa-db-fra.com

Remplacement de chaîne dans un fichier batch

Nous pouvons remplacer des chaînes dans un fichier de commandes à l'aide de la commande suivante

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

Ces lignes fonctionnent bien et modifient la chaîne "sauter 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?

87
Faisal

Vous pouvez utiliser!, Mais le commutateur ENABLEDELAYEDEXPANSION doit être réglé.

setlocal ENABLEDELAYEDEXPANSION
set Word=table
set str="jump over the chair"
set str=%str:chair=!Word!%
69
Vicky

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 oblige à citer l'original % signes mais tout fonctionne à la fin.

74
Joey