Batch boucle if

Fermé
F41NT - 6 nov. 2008 à 23:47
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 28 sept. 2010 à 01:25
Bonjour,
J'ai creer un petit script en batch que j'avais fait en bash. Cependant celui-ci ne marche pas. Il me semble etre tres pres du but.. il y a t-il une personne qui sache la reponse?
merci.
voila le script:
@echo off

set /p nombre_entre_par_user=Quel est le nombre mystere ?

set variable=%random%

if /I (%nombre_entre_par_user%)LSS(%random%)(goto :A)

if /I (%nombre_entre_par_user%)GTR(%random%)(goto :B)

if /I (%nombre_entre_par_user%)EQU(%random%)(goto :C)


:A
echo "Le nombre mystere est plus grand."

:B
echo "Le nombre mystere est plus petit."

:C
echo "Vous avez trouver le nombre mystere."

echo.

pause

8 réponses

Personnellement , je ferais une boucle sinon je ne vois pas trop l'interet :
(mettre random dans variable pour ensuite tester random ??... je ne comprends pas trop)
@echo off

set variable=%random%

:DEBUT

set /p nombre_entre_par_user=Quel est le nombre mystere ?

if /I %nombre_entre_par_user% LSS %variable% (goto :A)
if /I %nombre_entre_par_user% GTR %variable% (goto :B)
if /I %nombre_entre_par_user% EQU %variable% (goto :C)

:A
echo "Le nombre mystere est plus grand."
goto DEBUT

:B
echo "Le nombre mystere est plus petit."
goto DEBUT

:C
echo "Vous avez trouver le nombre mystere."

PAUSE
1
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
26 sept. 2010 à 03:32
Bonjour,

Je ne comprends pas pour quelle(s) raison(s) tu souhaites effectuer plusieurs tentatives de copiages des fichiers.
1
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
26 sept. 2010 à 15:10
En effet, si ta commande COPY est convenablement codée et que tes répertoires existent effectivement la copie s'effectuera convenablement.
Dans le cas contraire pour une erreur de syntaxe, ou si le ou les deux répertoires sont inexistants, tu auras un arrêt de l'exécution du batch accompagné d'un message d'anomalie du type :
Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.

Je ne vois pas d'autres cas d'anomalie possibles, hormis peut-être un manque de place sur le disque cible, mais là aussi tu aura s un message d'anomalie.

De toutes manières ce n'est pas en multipliant les tentatives (dans une même exécution d'un batch) que tu règleras ces types de problèmes.

Malgré cela, pour répondre à ton attente, je te propose cette cinématique de fonctionnement qui présume de la non existance des répertoires source et/ou cible en gardant à l'esprit que les 3 tentatives ne serviront à rien si l'un ou les deux répertoires sont inconnus:

CLS
ECHO OFF

set /A essai = 1

:copie_fichiers

IF EXIST "C:\etats\*.txt" (
IF EXIST "D:\etats" (
rem Documentation sur la commande COPY: HELP COPY sous l'invite de commandes.
copy /V /-Y C:\etats\*.txt" /A "D:\etats" /A
GOTO :EOF ) )

IF %essai% LEQ 3 (
echo Trace pour tests: ESSAI No. %essai%
pause
set /A essai = %essai% + 1
goto copie_fichiers
)
) ELSE (
goto pb_copie_fichiers
)

:pb_copie_fichiers
echo probleme!

goto :EOF
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
7 nov. 2008 à 00:31
Bonsoir,

Voici une version qui fonctionne chez moi Windows XP:
@echo off
cls
set /p nombre_entre_par_user=Quel est le nombre mystere ?

set variable=%random%

if /I %nombre_entre_par_user% LSS %random% (goto :A)

if /I  %nombre_entre_par_user% GTR %random% (goto :B)

if /I  %nombre_entre_par_user% EQU %random% (goto :C)


:A
echo "Le nombre mystere est plus grand."
goto :EOF

:B
echo "Le nombre mystere est plus petit."
goto :EOF

:C
echo "Vous avez trouver le nombre mystere."

goto :EOF
0
SAW5 Messages postés 111 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 6 janvier 2010 7
17 déc. 2008 à 15:03
ça doit être une faute de frappe...sinon quand tu dis : Personnellement , je ferais une boucle

oui le code peut accepter une boucle mais,...à mon goût des IF enchaîner + des (GOTO ou CALL) sont plus plus appropriés pour ce genre de code...

d'autre part, fixer une limite au random ça sera plus fun..mais si le prompt DOS n'ai pas convivial pour ce genre de jeux..
0

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

Posez votre question
Utilisateur anonyme
18 déc. 2008 à 20:58
Oui, c'est vrai...
Sinon, tu peut fixer que le nombre %random% appartienne à un ensemble :

set /a NB=%random%%%100


Par exemple, se code permet d'enregistrer ton nombre "mystère" dans une variable %NB%.
Le nombre sera compris entre 0 et 100, se qui est parfois plus simple...

Après, c'est a toi de voir...

Bye
0
Bonjour, j'ai un problème de comparaison d'une variable avec un chiffre (je débute en batch).
J'essaie de faire une boucle qui retourne un code d'erreur si la copie de mes fichiers échoue après 3 essais: (je ne sais pas s'il faut mettre des "" autour des noms de variables et ou de chiffres, et des () autour d'une expression):

set essai=0
:copie_fichiers
if %essai%<=3
copy C:\etats\*.txt D:\etats
echo %errorlevel%
if errorlevel 0
goto fin
elseif
%essai%="%essai%+1"
goto copie_fichiers
endif
elseif %essai%>3
goto pb_copie_fichiers
endif

:pb_copie_fichiers
echo probleme!
:fin
0
Skurious Messages postés 2 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 17 février 2011
27 sept. 2010 à 23:54
Bonsoir,
la raison de multiplier les essais de copie de ces fichiers est que cette copie se fait d'un serveur à un autre, hors je soupçonne le réseau d'être défaillant (et/ou le 2e "serveur" d'être poussif...).
Si cette copie échoue plus de X fois (avec des temps d'attente entre chaque tentative), je dois prévoir de faire remonter ce pb (par un envoi de mail au service support, surement, ca reste à voir).

Ayant eu du mal à faire ces boucles en batch, on m'a conseillé de partir sur un VBS, mais j'essaierai tes conseils malgré tout car j'avais réussi à comprendre la syntaxe des IF (parenthèses nécessaire pour plusieurs lignes, etc...)

Merci bien pour le détail du code en tout cas.
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 sept. 2010 à 01:25
Bonsoir,

Merci pour ce retour et ces précisions. Bon courage.
0