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

Fermé
gnugo - Modifié par gnugo le 9/07/2014 à 09:05
 gnugo - 9 juil. 2014 à 12:21
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
9 juil. 2014 à 11:20
hello
supprimer le " ou en ajouter un 2ème ?
0
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
9 juil. 2014 à 12:14
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
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
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
Ç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