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

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

1 réponse

  1. Contributeur
    hello
    supprimer le " ou en ajouter un 2ème ?
    1. 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
    2. Contributeur
      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
    3. 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
    4. 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
    5. Ç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