Réaliser un batch...

Fermé
PAPY - Modifié par ^Abel^ le 6/10/2016 à 17:50
PAPYELY Messages postés 4 Date d'inscription jeudi 6 octobre 2016 Statut Membre Dernière intervention 11 octobre 2016 - 11 oct. 2016 à 17:14
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

dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
7 oct. 2016 à 07:59
hello
ce n'est pas clair, quel doit être le résultat ?
0
PAPYELY Messages postés 4 Date d'inscription jeudi 6 octobre 2016 Statut Membre Dernière intervention 11 octobre 2016
7 oct. 2016 à 09:36
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
dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
7 oct. 2016 à 10:57
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
PAPYELY Messages postés 4 Date d'inscription jeudi 6 octobre 2016 Statut Membre Dernière intervention 11 octobre 2016
7 oct. 2016 à 11:40
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
dubcek Messages postés 18749 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 septembre 2024 5 618
7 oct. 2016 à 12:04
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
PAPYELY Messages postés 4 Date d'inscription jeudi 6 octobre 2016 Statut Membre Dernière intervention 11 octobre 2016
Modifié par PAPYELY le 7/10/2016 à 20:04
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PAPYELY Messages postés 4 Date d'inscription jeudi 6 octobre 2016 Statut Membre Dernière intervention 11 octobre 2016
11 oct. 2016 à 17:14
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