Batch : comment protéger une variable lors de son utilisation

gnugo -  
 gnugo -
Bonjour,

J'ai énormément de mal à trouver comment protéger une variable dans un script batch.
J'ai une variable qui peut contenir toute sorte de caractères que je dois passer par un pipe sur l'entrée standard d'une autre commande.

Mais quand la variable contient le caractère ", ça ne fonctionne pas, et pas moyen de le protéger
Exemple pour montrer que le pipe ne fonctionne plus :
C:\>set var=test

C:\>echo %var% | echo "Le 2eme echo fonctionne"
"Le 2eme echo fonctionne"

C:\>set var="test

C:\>echo %var% | echo "Le 2eme echo fonctionne"
"test | echo "Le 2eme echo fonctionne"

Comment puis-je protéger mon %var% ?

Merci d'avance pour votre aide
A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
supprimer le " ou en ajouter un 2ème ?
0
gnugo
 
Salut,

Oui, tu veux dire faire à chaque fois un traitement sur ma variable pour protéger/supprimer les caractères spéciaux ?
Je pensais à ça aussi comme solution de contournement mais c'est un peu lourd.
En fait ça m'étonnait de ne pas trouver comment faire et c'est pour ça que je suis venu demander ici.

Connaissez vous un moyen simple de passer une variable dans l'entrée standard d'une commande ?
Je cherche un peu l'équivalent de commande<<<"$variable" en bash ou echo "$variable" | commande
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
DOS est très limité
passer par un fichier
C:> set var="test
C:> set var
var="test
C:> for /f "delims== tokens=2" %a in ('set var') do @echo %a > zz
C:> type zz
"test
C:>prog < zz
0
gnugo
 
Ah oui effectivement c'est limité, tout ça juste pour ça.
Je vais donc passer par un fichier si c'est la seule façon de travailler par flux.

Je te remercie
0
gnugo
 
Quoique dans mon cas je peux aussi me contenter de supprimer tous les " de ma variable, ça ne pose pas de problème dans mon code

Je vais tenter une simple substitution des " par rien ... si ça merde pas non plus à cause du " dans ma variable :p
0
gnugo
 
Ça marche
Je me contente de ça pour l'instant !

C:\>set var="lala

C:\>echo %var%
"lala

C:\>set var=%var:"=%

C:\>echo %var%
lala
0