Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[RESOLU] Probleme, blocage d'un batch, aide sur fonction for
Auteur Message
Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Salut la camaraderie,
j'ai un petit problème,
je créé un générateur de mot de passe, avec 62 caractères (maj, min, et nb), evidemment je ne suis pas tres fort avec la boucle for do et donc je suis obligé de le créer à ma façon.
J'ai donc créé une boucle for qui se répète x fois, (l'utilisateur choisis) et le probleme c'est quelle amène à une liste de caractères qui sont censsé s'incrémenter dans une variable à la suite, petit probleme Wink
le batch se met en pause à ce moment.
J'ai ma petite idée, je pense que ça vient de for do, et que l'ordi ne sait pas quand il doit s'arreter, j'ai donc besoinde votre aide Mr. Green

Code:
@echo off
title generateur de mot de passe
set mdp=
set nb=

:debut
echo Bienvenu dans le generateur de mot de passe
pause > nul &cls
:caracteres
echo Combien de caractere voulez-vous que votre mot de passe fasse ?(min 4, max 50)
set /p carac=
if /i %carac% GEQ 4 cls &goto 50
goto caracteres

:50
if %carac% LEQ 50 cls &goto confirmer
gotocaracteres

:confirmer
cls
echo Excellent, confirmez-vous la taille (%carac%) de votre mot de passe ?(O=oui, N=non)
set /p size=
if /i %size%==O goto nbaleatoire
if /i %size%==N goto caracteres
goto confirmer

:nbaleatoire
set nb=random%%62
for %%a in (1,0,%carac%) do goto list
goto chargement

:list
if %nb%==0 set mdp=%mdp%a &if %nb%==1 set mdp=%mdp%b &if %nb%==2 set mdp=%mdp%c &if %nb%==3 set mdp=%mdp%d &if %nb%==4 set mdp=%mdp%e &if %nb%==5 set mdp=%mdp%f &if %nb%==6 set mdp=%mdp%g
if %nb%==7 set mdp=%mdp%h &if %nb%==8 set mdp=%mdp%i &if %nb%==9 set mdp=%mdp%j &if %nb%==10 set mdp=%mdp%k &if %nb%==11 set mdp=%mdp%l &if %nb%==12 set mdp=%mdp%m
if %nb%==13 set mdp=%mdp%n &if %nb%==14 set mdp=%mdp%o &if %nb%==15 set mdp=%mdp%p &if %nb%==16 set mdp=%mdp%q &if %nb%==17 set mdp=%mdp%r &if %nb%==18 set mdp=%mdp%s
if %nb%==19 set mdp=%mdp%t &if %nb%==20 set mdp=%mdp%u &if %nb%==21 set mdp=%mdp%v &if %nb%==22 set mdp=%mdp%w &if %nb%==23 set mdp=%mdp%x &if %nb%==24 set mdp=%mdp%y
if %nb%==25 set mdp=%mdp%z &if %nb%==26 set mdp=%mdp%A &if %nb%==27 set mdp=%mdp%B &if %nb%==28 set mdp=%mdp%C &if %nb%==29 set mdp=%mdp%D &if %nb%==30 set mdp=%mdp%E
if %nb%==31 set mdp=%mdp%F &if %nb%==32 set mdp=%mdp%G &if %nb%==33 set mdp=%mdp%H &if %nb%==34 set mdp=%mdp%I &if %nb%==35 set mdp=%mdp%J &if %nb%==36 set mdp=%mdp%K
if %nb%==37 set mdp=%mdp%L &if %nb%==38 set mdp=%mdp%M &if %nb%==39 set mdp=%mdp%N &if %nb%==40 set mdp=%mdp%O &if %nb%==41 set mdp=%mdp%P &if %nb%==42 set mdp=%mdp%Q
if %nb%==43 set mdp=%mdp%R &if %nb%==44 set mdp=%mdp%S &if %nb%==45 set mdp=%mdp%T &if %nb%==46 set mdp=%mdp%U &if %nb%==47 set mdp=%mdp%V &if %nb%==48 set mdp=%mdp%W
if %nb%==49 set mdp=%mdp%X &if %nb%==50 set mdp=%mdp%Y &if %nb%==51 set mdp=%mdp%Z &if %nb%==52 set mdp=%mdp%0 &if %nb%==53 set mdp=%mdp%1 &if %nb%==54 set mdp=%mdp%2
if %nb%==55 set mdp=%mdp%3 &if %nb%==56 set mdp=%mdp%4 &if %nb%==57 set mdp=%mdp%5 &if %nb%==58 set mdp=%mdp%6 &if %nb%==59 set mdp=%mdp%7 &if %nb%==60 set mdp=%mdp%8
if %nb%==61 set mdp=%mdp%9
goto nbaleatoire

:chargement
cls
for %%b in (c ch char charg charge chargem chargemen chargement) do echo %%b &timeout /t 1 /nobreak &cls
for %%b in (chargement. chargement.. chargement...) do echo %%b &timeout /t 1 /nobreak &cls &timeout /t 1 /nobreak
echo chargement termine, appuyez sur une touche pour continuer.
pause > nul
goto fin

:fin
echo Voulez-vous connaitre votre mot de passe ?(O=oui, N=non)
set /p choice=
if /i %choice%==O goto vraiFin
if /i %choice%==N goto error
goto fin

:vraiFin
echo j'ai le plaisir de vous annoncer que votre mot de passe est ...
timeout /t2 /nobreak
cls &echo mdp:%mdp%
pause > nul
echo Voulez-vous recommencer ?(R1=recommencer avec meme nombre de caracSres, R2=recommencer en choisissant le nombre de caracteres, Q=quitter)
set /p restart=
if /i %restart%==R1 goto nbaleatoire &if /i %restart%==R2 goto debut &if /i %restart%==Q goto error
goto vraiFin

:error
echo Programme termine &pause > nul




Dernière édition par Guerrion24 le Dim 8 Aoû 2010 - 09:57; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: Probleme, blocage d'un batch, aide sur fonction for 
Hello j'ai repéré une minuscule erreur
Code:
for %%b in(c ch char charg charge chargem chargemen chargement) do echo %%b &timeout /t 1 /nobreak &cls
for %%b in(chargement. chargement.. chargement...) do echo %%b &timeout /t 1 /nobreak &cls &timeout /t 1 /nobreak

Faut rajouter un espace entre " in " et la parenthaise :
Code:
for %%b in (c ch char charg charge chargem chargemen chargement) do echo %%b &timeout /t 1 /nobreak &cls
for %%b in (chargement. chargement.. chargement...) do echo %%b &timeout /t 1 /nobreak &cls &timeout /t 1 /nobreak

£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Merci de ta réponse, mais malheureusement le batch se bloque quand même, à mon avis c'est au niveau du for do avec le %size% mais je ne sais aps comment faire pour le corriger.

Merci quand même

Edit :

Je viens de me rendre compte que dans la boucle for je m'étais trompé de variable sauf que même avec la bonne ça se bloque,
j'en reviens à votre aide amis batcheurs. Mr. Green

Ps: j'ai changé le code pour qu'il n'y ai plus les erreurs trouvées



Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Hello,

Voici le correction, j'ai aussi supprimé le commande "timeout" qui ne fonctionne pas sous XP ...

@+


Code:

@echo off
title generateur de mot de passe
:: Corrigé par STRYK

:debut
echo Bienvenu dans le generateur de mot de passe
pause > nul &cls
:caracteres
echo Combien de caractere voulez-vous que votre mot de passe fasse ?(min 4, max 50)
set /p carac=
if /i %carac% GEQ 4 cls &goto 50
goto caracteres

:50
if %carac% LEQ 50 cls &goto confirmer
gotocaracteres

:confirmer
cls
echo Excellent, confirmez-vous la taille (%carac%) de votre mot de passe ?(O=oui, N=non)
set /p size=
if /i %size%==O goto nbaleatoire
if /i %size%==N goto caracteres
goto confirmer

:nbaleatoire
:: Correction DE: for %%a in (1,0,%carac%) do goto list
for /l %%a in (1,1,%carac%) do call :list
goto chargement

:list
:: correction DE: set nb=random%%62
set /a nb=%random%%%62

if %nb%==0 set "mdp=%mdp%a"
if %nb%==1 set "mdp=%mdp%b"
if %nb%==2 set "mdp=%mdp%c"
if %nb%==3 set "mdp=%mdp%d"
if %nb%==4 set "mdp=%mdp%e"
if %nb%==5 set "mdp=%mdp%f"
if %nb%==6 set "mdp=%mdp%g"
if %nb%==7 set "mdp=%mdp%h"
if %nb%==8 set "mdp=%mdp%i"
if %nb%==9 set "mdp=%mdp%j"
if %nb%==10 set "mdp=%mdp%k"
if %nb%==11 set "mdp=%mdp%l"
if %nb%==12 set "mdp=%mdp%m"
if %nb%==13 set "mdp=%mdp%n"
if %nb%==14 set "mdp=%mdp%o"
if %nb%==15 set "mdp=%mdp%p"
if %nb%==16 set "mdp=%mdp%q"
if %nb%==17 set "mdp=%mdp%r"
if %nb%==18 set "mdp=%mdp%s"
if %nb%==19 set "mdp=%mdp%t"
if %nb%==20 set "mdp=%mdp%u"
if %nb%==21 set "mdp=%mdp%v"
if %nb%==23 set "mdp=%mdp%x"
if %nb%==24 set "mdp=%mdp%y"
if %nb%==25 set "mdp=%mdp%z"
if %nb%==26 set "mdp=%mdp%A"
if %nb%==27 set "mdp=%mdp%B"
if %nb%==28 set "mdp=%mdp%C"
if %nb%==29 set "mdp=%mdp%D"
if %nb%==30 set "mdp=%mdp%E"
if %nb%==31 set "mdp=%mdp%F"
if %nb%==32 set "mdp=%mdp%G"
if %nb%==33 set "mdp=%mdp%H"
if %nb%==34 set "mdp=%mdp%I"
if %nb%==35 set "mdp=%mdp%J"
if %nb%==36 set "mdp=%mdp%K"
if %nb%==37 set "mdp=%mdp%L"
if %nb%==38 set "mdp=%mdp%M"
if %nb%==39 set "mdp=%mdp%N"
if %nb%==40 set "mdp=%mdp%O"
if %nb%==41 set "mdp=%mdp%P"
if %nb%==42 set "mdp=%mdp%Q"
if %nb%==43 set "mdp=%mdp%R"
if %nb%==44 set "mdp=%mdp%S"
if %nb%==45 set "mdp=%mdp%T"
if %nb%==46 set "mdp=%mdp%U"
if %nb%==47 set "mdp=%mdp%V"
if %nb%==48 set "mdp=%mdp%W"
if %nb%==49 set "mdp=%mdp%X"
if %nb%==50 set "mdp=%mdp%Y"
if %nb%==51 set "mdp=%mdp%Z"
if %nb%==52 set "mdp=%mdp%0"
if %nb%==53 set "mdp=%mdp%1"
if %nb%==54 set "mdp=%mdp%2"
if %nb%==55 set "mdp=%mdp%3"
if %nb%==56 set "mdp=%mdp%4"
if %nb%==57 set "mdp=%mdp%5"
if %nb%==58 set "mdp=%mdp%6"
if %nb%==59 set "mdp=%mdp%7"
if %nb%==60 set "mdp=%mdp%8"
if %nb%==61 set "mdp=%mdp%9"
goto :EOF

:chargement
cls
for %%b in (c ch char charg charge chargem chargemen chargement chargement. chargement.. chargement...) do (
    cls
    echo %%b
   @ping localhost -n 1 >nul
   )

echo chargement termine, appuyez sur une touche pour continuer.
pause > nul
goto fin

:fin
echo Voulez-vous connaitre votre mot de passe ?(O=oui, N=non)
set /p choice=
if /i %choice%==O goto vraiFin
if /i %choice%==N goto error
goto fin

:vraiFin
echo j'ai le plaisir de vous annoncer que votre mot de passe est ...
@ping localhost -n 2 >nul
cls &echo mdp:%mdp%
pause > nul
echo Voulez-vous recommencer ?(R1=recommencer avec meme nombre de caracSres, R2=recommencer en choisissant le nombre de caracteres, Q=quitter)
set /p restart=
if /i %restart%==R1 goto nbaleatoire &if /i %restart%==R2 goto debut &if /i %restart%==Q goto error
goto vraiFin

:error
echo Programme termine &pause > nul





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Merci beaucoup stryk, pourle random j'avais trouvé en cherchant sur le fofo mais pour la boucle fr je n'aurais jamais pu trouevr surtout avec le /l, dont je ne sais pas a quoi il sert .
areil pour le goto :EOF que je vois partout mais que je ne sais pas utiliser.
Encore merci.



Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Héhé, de rien amigo Wink

Testes ceci:

for /l %%A in (1,1,10) do echo %%A

ensuite
for /l %%A in (3,1,9) do echo %%A

donc voila tu vas comprendre ...

Quand à goto :EOF, il sert à renvoyer de l'endroit où a été appellé l'index:

Code:

@echo off
call :TRUC
pause
exit
echo Ce texte ne s'affiche pas
:TRUC
echo ce texte s'affiche
goto :EOF



Si tu n'as pas d'autres questions, tu peux noter [RESOLU]

@+




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 
Merci beaucoup j'ai aussi lu ton cours sur les boucles for ça m'a était bien pratique



Message [RESOLU] Probleme, blocage d'un batch, aide sur fonction for 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch