Probleme de "logique de script" - Shell/Batch - Programmation
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 !
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
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
Marsh Posté le 05-01-2008 à 23:10:44
En effet
Tout marche bien
A moi les revisions d'anglais
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
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 ^^
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
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..
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... ))
++
Marsh Posté le 04-01-2008 à 20:51:30
Bonjours a tous
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="
Alors qu'au premier passage j'ai le droit a "above="
(la 20em ligne est juste la pour voir ou le programme en est)
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