Réaliser un batch...

PAPY -  
PAPYELY Messages postés 4 Statut Membre -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    ce n'est pas clair, quel doit être le résultat ?
    0
  2. PAPYELY Messages postés 4 Statut Membre
     
    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
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    0
    1. PAPYELY Messages postés 4 Statut Membre
       
      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.
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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!
    )

    0
    1. PAPYELY Messages postés 4 Statut Membre
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PAPYELY Messages postés 4 Statut Membre
     
    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.
    0