Remplacer % par %%

Résolu
Le titre n'est pas tres clair mais en resume, je voudrais savoir comment on fait pour transformer un "%" en deux "%%".
Code :
@echo off
set /p var=
REM si l utilisateur tape %, j aimerais que ca en fasse deux
set var=%var:%=%%%
echo %var%
J espere que vous comprendrez.
Je cherche a remplacer des caractères par d autres, de cette façon.
Si je veux remplacer les "a" dune variable par b par exemple je ferais ceci:
set var=%var:a=b%
Mais ca marche pas avec les pourcentages (je me doutais bien), et j'ai pas trouve de solution.
Merci d'avance

6 réponses

  1. Modérateur
    Salut,

    Si tu peux, utilises le notepad (Ctrl + H)

    Sinon une variable de commande comme % à répliquer en utilisant la même variable, je sais pas comment.

    D'autres qui s'y connaissent plus te le diront peut être.
    0
    1. Malheureseument, cela ne se fait pas en batch, c'est a l utilisateur de le faire manuellement, mais merci quand meme.
      0
  2. Contributeur
    hello
    essayer avec
    set var=%var:^%=%%% 
    0
    1. Ça ne marche pas, si je fais echo %var% apres, il m affiche la valeur avec un % apres.
      Ex:
      set var=%%exemple%%
      set var=%var:^%=%%%
      echo %var%
      pause > nul
      Il m affiche exemple%
      0
    2. Contributeur
      y pas de % dans exemple !!
      set var=%var:^%=%%% ........ remplace % par %%
      REM si l utilisateur tape %, j aimerais que ca en fasse deux
      0
    3. @dubcekAh pardon je me suis trompe :) Mais ça fait la même chose avec des %. Si il n y en a pas dans la valeur, ça en met un après, même chose s il y a des %.
      0
    4. Contributeur
      je ne comprends pas ce que tu veux
      0
    5. @dubcekCe sera plus simple avec un exemple :
      @echo off
      set /p var=
      COMMANDE POUR TRANSFORMER UN % EN DEUX %
      echo %var%>>var.txt
      Jaimerais que si l utilistateur tape par exemple %bonjour% dans le set /p, au lieu que ça écrive %exemple% dans var.txt, j aimerais que ça ecrive %%exemple%% dans var.txt, que ca double les %. Cest plus clair ?
      0
  3. Voilà la solution :
    @echo off
    setlocal enableextensions enabledelayedexpansion
    chcp 65001 >nul

    set /p "moncode=Tapez votre code: "
    set moncode=!moncode:%%=%%%%!
    echo !moncode! > 0000.txt

    Même si je ne comprends pas exactement ton but final, je peux dire que ta méthode n'est certainement pas la bonne, il faut tout revoir.

    1
    1. Whao ! Merci infinimenr! ! Mais pourrais tu me dire ce que signifie chcp et que veux tu dire par il faut tout revoir?
      0
      1. CHCP signifie "Change Codepage" cela permet de modifier l'encodage des caractères.

        Quand je dis "il faut tout revoir" je pense que ta façon de faire est inutilement compliqué, il doit y avoir un moyen plus simple mais je n'ai pas assez d'informations sur ton projet.
        0
    2. Ah ok merci ! C'est pas grave si c'est compliqué.
      0
      1. Mon projet est que tout ce que j écris dans un set /p va être transféré dans un autre fichier entoure d un echo et d un >> fichier.bat, c'est tout. Ex: echo (le texte que j ai ecrit) >> fichier.bat
        0
        1. C'est un genre d'interface pour écrire des scripts ? Un IDE comme Powerbatch ?
          0
        2. Ouais une genre d interface pour pas a avoir a mettre des echo et des >> fichier.bat à chaque ligne
          0