Réaliser un batch...

[Fermé]
Signaler
-
Messages postés
4
Date d'inscription
jeudi 6 octobre 2016
Statut
Membre
Dernière intervention
11 octobre 2016
-
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

Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 331
hello
ce n'est pas clair, quel doit être le résultat ?
Messages postés
4
Date d'inscription
jeudi 6 octobre 2016
Statut
Membre
Dernière intervention
11 octobre 2016

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
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 331
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
Messages postés
4
Date d'inscription
jeudi 6 octobre 2016
Statut
Membre
Dernière intervention
11 octobre 2016

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.
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 331
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!
)

Messages postés
4
Date d'inscription
jeudi 6 octobre 2016
Statut
Membre
Dernière intervention
11 octobre 2016

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.
Messages postés
4
Date d'inscription
jeudi 6 octobre 2016
Statut
Membre
Dernière intervention
11 octobre 2016

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.