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" pour "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 faire.
set word=table
set str="jump over the chair"
??
Des idées?
command-line
batch-file
Faisal
la source
la source
Réponses:
Vous pouvez utiliser!, Mais vous devez avoir le commutateur ENABLEDELAYEDEXPANSION réglé.
la source
str
elle-même provient d'une expansion retardée?set str=!str:chair=!word!!
ne fonctionne pas correctement."jump over the !word!"
.Vous pouvez utiliser la petite astuce suivante:
L'
call
il provoque une autre couche d'expansion variables, ce qui rend nécessaire de citer les originaux des%
signes , mais tout fonctionne à la fin.la source
%"jump over the "word%%%
. Sachez simplement que le code dans les fichiers batch et en ligne de commande peut produire des résultats différents.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%'
J'ai pu utiliser la réponse de Joey pour créer une fonction:
Utilisez-le comme:
Et ces fonctions au bas de votre fichier batch.
Et rappelez-vous que vous DEVEZ ajouter "SETLOCAL ENABLEDELAYEDEXPANSION" en haut de votre fichier batch, sinon rien de tout cela ne fonctionnera correctement.
la source
Cela fonctionne bien
la source
chair
et ajoute le mottable
, mais il n'échange pas les deux mots. Essayez de remplacer le motover
parunder
et vous obtenezjump the chairunder