Probleme de "logique de script"

Probleme de "logique de script" - Shell/Batch - Programmation

Marsh Posté le 04-01-2008 à 20:51:30    

Bonjours a tous   :hello:  
 
Voila , j'aurai voulu savoir si quelqu'un voyait où est le probleme svp :
 
A la 15em ligne , au second passage , il devrait afficher "according_to="
A la place il met "a2="  :heink:  
Alors qu'au premier passage j'ai le droit a "above="   :sol:  
(la 20em ligne est juste la pour voir ou le programme en est)
 

Code :
  1. @echo off
  2. color 02
  3. set tempo=0
  4. set nb=1
  5. set nbb=111
  6. set a1=above
  7. set a111=ci-dessus
  8. set ax=%a1%
  9. set axxx=%a111%
  10. :loop
  11. set /p tempo=%ax%=                                 
  12. if %tempo%==%axxx% (echo true) else (echo false)
  13. pause>>nul
  14. set /a nb=%nb%+1
  15. set /a nbb=%nbb%+1
  16. title test anglais nb=%nb%  nbb=%nbb%
  17. set ax=a%nb%
  18. set axxx=a%nbb%
  19. set a2=according_to
  20. set a112=selon
  21. goto loop


 
 
Si quelqu'un pouvais me venir en aide , ce serait bien sympatique  :)  
 
Bonne soirée a tous et bonne année  ;)  
 
Au passage , sympa le forum ;)

Reply

Marsh Posté le 04-01-2008 à 20:51:30   

Reply

Marsh Posté le 04-01-2008 à 23:21:15    

Oui, au premier passage il affiche le contenu de la variable %ax%, qui est défini par la ligne 11 : set ax=%a1% et la variable %a1% contient "above"
Au second, il est redéfini par la ligne 21 : set ax=a%nb% que tu défini mal.
Ce que tu aurais du écrire logiquement c'est : set ax=%a%nb%% (j'espere etre clair)
Mais en batch ceci ne fonctionne pas, il faut utiliser ce qu'on apelle l'expansion des variables d'environnement retardées. Ceci grace a l'option : setlocal ENABLEDELAYEDEXPANSION
et definir %ax% dans la boucle par : set ax=!a%nb%! ce qui aura pour consequence de definir la variable en 2 temps (si on peut dire ça comme ça), il commencera a rechercher le contenu de %nb%, il trouvera 2, et il le remplacera pour donner : set ax=%a2%
 
Voila j'espere que t'as compris ^^
Bonne année a toi aussi ;p
Wi forum sympa pour les passionnés du batch !

Reply

Marsh Posté le 05-01-2008 à 15:49:46    

Okai !  
 
Merci beaucoup d'avoir pris du temps pour repondre :)
 
En effet ,j'avais testé le ax=%a%nb%% mais ca ne marchais pas :)
 
Par contre , juste une derniere precision , j'ai testé ce que proposais et j'ai ceci :
Je vois pas telement d'où ca peut venir , si tu as une petite idée stp , ce serai sympa :)  
 
http://pierreyves8.free.fr/batch.JPG
 
 
Merci encore pour tout ;)
 
Bonne journée :)

Reply

Marsh Posté le 05-01-2008 à 22:56:22    

Le probleme c'est que tu défini les 2ieme variable de "a" :
set a2=according to
set a112=selon
APRES avoir defini :
set ax=!a%nb%!
set axxx=!a%nbb%!
 
Donc le programme demande de mettre le contenu de la variable a2 dans ax mais a2 n'existe pas encore !
Voila un code un peu plus "propre" :
 
@echo off
setlocal enabledelayedexpansion
color 02
 
set tempo=0
set nb=1
set nbb=111
 
set a1=above
set a111=ci-dessus
 
set a2=according to
set a112=selon
 
set ax=%a1%
set axxx=%a111%
 
:loop
set /p tempo=%ax%=
if "%tempo%"=="%axxx%" (echo true) else (echo false)
pause>nul
set /a nb+=1
set /a nbb+=1
title test anglais nb=%nb%  nbb=%nbb%
 
set ax=!a%nb%!
set axxx=!a%nbb%!
 
pause>nul
goto loop

Reply

Marsh Posté le 05-01-2008 à 23:10:44    

En effet :)
Tout marche bien :)
 
A moi les revisions d'anglais :D
 
Bonne soirée et merci pour ton aide precieuse , bonne continuation :)
 
Ps: d'ailleur si tu as quelques ptis batch sympa , je serais heureux de les voir :)

Reply

Marsh Posté le 06-01-2008 à 04:13:35    

J'avais posté mes sources ici :
http://forum.hardware.fr/hfr/Progr [...] 2210_1.htm
 
Jeu de bataille navale (reste des trucs a finir) :
http://forum.hardware.fr/hfr/Progr [...] m#t1525950
 
J'ai codé le démineur aussi, c'est un peu le meme principe, si sa t'interesse. J'ai codé pas mal de truc mais j'vais pas tout poster hein ^^

Reply

Marsh Posté le 06-01-2008 à 13:06:55    

Lol !  
 
Mortel ton jeu de bataille ^^  
 
C'est des codes de taré que tu fais ... (deja qu'avec un code 30 lignes je met 5 jours pour trouver les erreurs ...) tu n'as pas mis trop de temps a le developper ?
 
Tu as appris tout ca où ? :)
 
Comme quoi le batch ... c'est pas encore tout a fait depassé :)
 
Par contre j'ai pas tout compris au systeme de ton administrateur de server :)

Reply

Marsh Posté le 06-01-2008 à 16:30:42    

J'ai appris ça tout seul en codant, en regardant des codes... y'a pas tellement de tuto sur internet. C'est assez simple comme language, j'vois plus ce language comme un "casse tete" pour coder, parce que c'est pas fait pour coder des programmes comme j'ai codé.
La bataille navale j'ai du mettre 2semaines je crois.
Wi le batch on peut faire des trucs assez sympa !
Par contre certain de mes programmes utilisent des commandes externes non-natifs a Windows (nc.exe, cmdow.exe) c'est pour ça que j'ai eu un plus grand choix de programme.
nc.exe (netcat) permet d'établir des connexions, comme t'as du le deviner dans le code de la bataille navale. cmdow.exe permet de cacher la fenetre cmd.
 
Oui je commente jamais mes codes désolé ^^
Alors la premiere partie sert a créer le fichier qui loguera l'ip du client, l'heure, et le pass qu'il tapera.
la partie ::log ip permet de recuperer l'adresse ip du client et de la mettre dans le fichier de log.
::verif ip permet de verifier que l'ip n'a pas tenté de se connecter trop de fois (pour la sécurité), s'il tente de trop se connecté, il ne sera plus autorisé a se connecté.
Je pense que t'as compris le reste du code, c'est pas trop compliqué (enfin pour moi en tout cas (vu que c'est moi qui la codé aussi ^^))
Il fonctionne avec netcat, j'avais écris juste au dessus du code :
"Alors, sur le serveur, on commence a executer : nc.exe -L -p 65535 -e server.bat qui permet de se mettre en écoute sur le port 65535 et de rediriger ce que le client tape vers server.bat dont le code est juste en dessous"
Et le client se connect avec netcat aussi : nc IP_du_server 65535
J'avais codé un client aussi pour éviter de faire cette manip.
 
Voila voila, si t'as des questions hésites pas ;)
PS : si t'es accro au batch comme moi, t'peux m'ajouter sur msn : blastkiller@hotmail.fr
J'ai quelques projets en cours encore, mais la motivation a du mal a suivre, parce que coder seul c'est pas marant ^^ Si sa t'interesse..

Reply

Marsh Posté le 06-01-2008 à 19:19:40    

Lool ^^
 
Jcomprend mieux en effet :)
 
C'est vrai que les tuto de batch sur internet sont pas tres nombreux , c'est genial que tu es pu apprendre autant :)
 
Ba ecoutes jvé te dire tres franchement , le batch était un loisir , maintenant c'est devenu un "outil".
 
J'utilise des pti script comme pour la , me faire reviser mon anglais , ou automatiser des trucs , mais ca s'arrete la.
 
Personelement jpense ca pourrai etre bien sympa , apres faut voir , en voyant tes script , jvois pas telment ce que je pourrai t'apporter :) en plus les cours reprennent , donc je sais pas du tout si j'aurai du temps pour coder ...
 
Mais sinon je suis bien tenté par l'idée :)
 
A toi de voir si ca vaut le cout :)
 
Par contre : "C'est assez simple comme language, j'vois plus ce language comme un "casse tete" pour coder, parce que c'est pas fait pour coder des programmes comme j'ai codé."  
 
Tu as codé des programmes avec autre chose que du batch ? ( jte dis ca parceque j'avais entendu parler de languages qui sont aussi "abordables" que le batch , et qui permettent de faire de "veritable" interface graphique et qui n'ont pas besoins de ajout_de_commande.exe (le reve quoi... :D))
 
++ :)
 
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed