Réaliser un batch...

Bonjour, à tous et à chacun.

Dans le but de réaliser des sauvegardes croisées entre 2, 3 ou 4 clés USB dont les volumes sont Y, Z, V et W, je tente de réaliser un batch qui me permette d'y parvenir.
Jusque là tout va bien et en fonction des clés présentes j'obtiens - pour l'exemple - la variable <VAR1> = "YZVW". S'ensuit un choix <VAR2>, disons =3. Je m'épuise vainement à trouver une formule qui fonctionne, dans le genre:
<VAR3> = set /a %VAR1:~%VAR2%,1% . . . patatras.
Alors que <VAR1>:~3,1% répond bien "V".
D'avance merci à celui qui sait et qui voudra bien partager

PAPY

La connaissance est l'unique bien dont personne ne peut te dépouiller.

5 réponses

  1. Contributeur
    hello
    ce n'est pas clair, quel doit être le résultat ?
    1. Merci DUBCEK de vous intéresser à mon problème.

      Soit, dans une variable <VAR1> les 2, 3 ou 4 directories des clés usb susceptibles d'être utilisées, telles que Y, Z, V, W . Mon exemple:
      Je désigne la clé V en troisième position (CHOICE 1,2,3,4)
      Si j'écris <VAR3> = set /a %VAR1:~3,1% la réponse est V. Parfait.
      Si <VAR2>, à l'issue du choix, est 3, je pensais naïvement pouvoir obtenir la réponse "V" en écrivant <VAR3> = set /a %VAR1:~%VAR2%,1%.
      RIEN ! .
      Merci de votre aide et bien sincères salutations

      PAPY
      1. Contributeur
        la 1ère position est à 0
        C:> set var1=yzvw
        C:> set var3=%var1:~2,1%
        C:> echo %var3%
        v
        C:> set var4=%var1:~3,1%
        C:> echo %var4%
        w
        1. DUBCEK RE-merci,
          Je mesure la difficulté que peux être la vôtre d'avoir affaire à des débutants qui ne s'expriment pas clairement:

          la 1ère position est à 0 Ok,
          C:> set var1=yzvw
          C:> set var3=%var1:~2,1%
          C:> echo %var3%
          v
          C:> set var4=%var1:~3,1%
          C:> echo %var4%
          w

          C'est justement ces positions 2, 3 ou . . que je souhaiterais pouvoir remplacer par la <VAR2>. Ce qui, dans ma syntaxe actuelle, n'est pas du tout apprécié par le système.
          Avec mes bien sincères salutation

          PAPY

          La connaissance est l'unique bien dont personne ne peut te dépouiller.
      2. Contributeur
        dans ce genre ?
        C:> bb
        choix 1 Y
        choix 2 Z
        choix 3 V
        choix 4 W

        C:> type bb.bat
        @echo off
        setlocal enabledelayedexpansion
        set VAR1=YZVW
        for /L %%a in (0,1,3) do (
        set /a c=%%a+1
        echo choix !c! !VAR1:~%%a,1!
        )

        1. Bonsoir DUBCEK,
          Merci de votre célérité. Je serai moins rapide à cause déplacement familial cette fin de semaine.
          Je reprends contact dès LUNDI,
          Bon dimanche et sincères salutations,

          PAPY

          La connaissance est l'unique bien dont personne ne peut te dépouiller.
      3. DUBCEK bonsoir,

        Je suis enfin parvenu à un résultat dont je vous fais part:

        set var1="YZVW" (les différentes clés présentes sur le système)
        set var2=3 (désignation de la clé en <V>
        set Var3=1
        echo set Var4=%%Var1%:~%Var2%,%Var3%%% > %TEMP%\TMP.BAT
        call %temp%\tmp
        echo La clé est reconnue en VOLUME %Var4% extraite de %Var1%

        UNE lettre (Var3) càd la TROISIEME (Var2) a été extraite de la CHAINE (Var1)

        Merci à vous, merci à CCM et au plaisir de pouvoir être moi-même, utile.

        PAPY

        La connaissance est l'unique bien dont personne ne peut te dépouiller.