Accueil > > > BOUCLE FOR
BOUCLE FOR
Information sur la source
Description
Bonjour tout le monde :) Je vais directement aux choses sérieuses: Cette fonction vous permettra de faire une suite de commandes plusieurs fois en utilisant la syntaxe de base (ou presque lol (oui , je l'ai un peu adapté :s)) de la fameuse boucle FOR Syntaxe: /for [NomVariable][=][Initialisation] [NomVariable][<|>|<=|>=][Fin] <[+|-][Pas]|[NomVariable][++|--]|[NomVariable]=[No mVariable][+|-][Pas]> [CommandBlocName] [OtherParameters] Exemples d'utilisation: ------------------------- for test=1 test<=10 +1 commbloc %autreparamètre1 for test test<5 +2 commbloc %autreparamètre1 %autreparamètre2 for test=10 test>1 -1 commbloc for test test<=4 test++ commbloc for test=10 test>=1 -2 commbloc %autreparamètre1 for test=2 test<=10 test=test+3 commbloc %autreparamètre for test=3 test<7 +2 commbloc Explication des exemples: ----------------------------- > Pour chaque cas, il faut comme vous le voyez fournir un nom de variable et son initialisation à savoir test=1 ou test=10 ou encore test=3 Ce nom de variable devra absolument être sous la forme [[:alnum:]]+ (ne peut contenir que des lettres ou/et des chiffres) La valeure de l'initialisation peut être nulle , auquel cas , la boucle la considérera comme commençant à 0 > En deuzième paramètre, vous fournirez la borne d'arrêt de la boucle, à savoir test<=10 ou test>1 > En troisième paramètre, vous mettrez le " pas " que devra respecter la boucle for. >> pour faire une boucle incrémentative: >>> +Pas >>> ou NomVariable++ >>> ou NomVariable=NomVariable+Pas >> pour une boucle décrémentative: >>> -Pas >>> ou NomVariable-- >>> ou NomVariable=NomVariable-Pas > Finalement, précisez absolument le nom de l'alias contenant les commandes a boucler Les [OtherParameters] sont quant à eux les paramètres que vous incluerez si par exemple vous utilisez cette boucle au beau milieu d'un autre alias, donc vous comprendrez qu'il faille lui envoyer les paramètres(variables) déjà en utilisation lors de son appel pour permettre au bon fonctionnement de la suite des instructions. > En passant les [OtherParameters] , dans les bloc de commandes , on les retrouvera certainement :). tout dépend de ce que vous voulez faire ^^ Raison de ce modèle: ------------------------ Je n'ai pas trouvé (ou pas encore :p) d'autres moyens d'intégrer un bloc de commande dans une boucle for directement par l'appel de l'alias for lui-même Donc je passe par un alias intermédiaire contenant les commandes a faire ps: --- J'ai inclus un alias d'exemple " commbloc " afin que vous puissiez voir le fonctionnement de la bête lol
Source
- ; Boucle For
- ; -----------
-
- alias for {
- if ($4) {
- if $regex($1,/^([[:alnum:]]+=\d{1,})/i) { var %deb , %debreg = $regsub($1,/([[:alnum:]]+=)/gi,,%deb) }
- elseif $regex($1,/^([[:alnum:]]+)$/i) { var %deb = 0 }
- else { forsyn | goto end }
- if $regex($2,/(([[:alnum:]])(<|>|<=|>=)(\d{1,2}))/) { var %fin = $regml(4) , %marche = $regml(3) }
- else { forsyn | goto end }
- if $regex($3,/^(([+-])(\d{1,}))$/) { var %mdpas = $regml(2) , %pas = $regml(3) }
- elseif $regex($3,/^(([[:alnum:]]+)((\+|-){2}))$/i) { var %mdpas = $left($regml(3),1) , %pas = 1 }
- elseif $regex($3,/^(([[:alnum:]]+)=(\2)([+-])(\d{1,}))$/i) { var %mdpas = $regml(4) , %pas = $regml(5) }
- else { forsyn | goto end }
- %commblc = $4
- if ($5-) { var %oparam = $5- }
- while (%deb %marche %fin) { %commblc %deb $iif(%oparam,%oparam) | $iif((%mdpas == +),inc,dec) %deb %pas }
- }
- else { forsyn }
- :end
- }
- alias -l forsyn {
- echo -st $chr(2) $+ Incorrect Syntax in " FOR-loop "
- echo -st $chr(160)
- echo -st /for $for< $+ [NomVariable][=][Initialisation] $+ $for> $for< $+ [NomVariable][<|>|<=|>=][Fin] $+ $for> $for< $+ [+|-][Pas] $+ $for| $+ [NomVariable][++|--] $+ $for| $+ [NomVariable]=[NomVariable][+|-][Pas] $+ $for> $for< $+ [CommandBlocName] $+ $for> $for< $+ [OtherParameters] $+ $for>
- echo -st $chr(160)
- echo -st $fordb(Para 1:) $for< $+ [NomVariable][=][Initialisation] $+ $for> $fordb(Para 2:) $for< $+ [NomVariable][<|>|<=|>=][Fin] $+ $for>
- echo -st $fordb(Para 3:) $for< $+ [+|-][Pas] $+ $for| $+ [NomVariable][++|--] $+ $for| $+ [NomVariable]=[NomVariable][+|-][Pas] $+ $for>
- echo -st $fordb(Para 4:) $for< $+ [CommandBlocName] $+ $for> $fordb(Para 5:) $for< $+ [OtherParameters] $+ $for>
- }
- alias -l for< { return $+($chr(3),03,<,$chr(3)) }
- alias -l for> { return $+($chr(3),03,>,$chr(3)) }
- alias -l for| { return $+($chr(3),04,|,$chr(3)) }
- alias -l fordb { return $+($chr(2),$1-,$chr(2)) }
-
- ; Exemple de Bloc de commandes
- ; -------------------------------------
-
- alias commbloc {
- ; Para. $1 = %deb ; Other Parameters = $2-
- echo -st -
- echo -st command: $1
- echo -st command: $1
- echo -st Other Parameters: $2-
- echo -st -
- }
-
- ; FOR Loop (with comments)
- ; ------------------------
-
- alias for {
- ; si tous les paramètres nécessaires existent ...
- if ($4) {
- ; recherche de la valeure de l'initialisation ...
- ; en utilisant un $regsub, on récupère cette valeure !
- if $regex($1,/^([[:alnum:]]+=\d{1,})/i) {
- var %deb , %debreg = $regsub($1,/([[:alnum:]]+=)/gi,,%deb)
- }
- ; si aucune valeure n'est précisée, alors prendre 0 !
- elseif $regex($1,/^([[:alnum:]]+)$/i) {
- var %deb = 0
- }
- ; sinon , aller acheter un kébab ptdr
- else { forsyn | goto end }
- ; recherche de la borne de la boucle ...
- ; à partir du $regex et donc des $regml(n), on récupère les valeurs qu'ils nous faut ^^
- if $regex($2,/(([[:alnum:]])(<|>|<=|>=)(\d{1,2}))/) {
- var %fin = $regml(4) , %marche = $regml(3)
- }
- ; sinon , aller au macdo LOL
- else { forsyn | goto end }
- ; recherche du pas de la boucle ...
- ; j'utilise ici 3 modèles de regex différents ^^
- ; cas ou +|-Pas est rentré
- if $regex($3,/^(([+-])(\d{1,}))$/) {
- var %mdpas = $regml(2) , %pas = $regml(3)
- }
- ; cas ou NomVariable++|-- est rentré
- elseif $regex($3,/^(([[:alnum:]]+)((\+|-){2}))$/i) {
- var %mdpas = $left($regml(3),1) , %pas = 1
- }
- ; cas ou NomVariable=NomVariable+Pas est rentré ^^
- ; ( attention: si vous mettez par exemple, test=machine+2 , ça ne marchera jamais . il faut mettre test=test+2 , si le nom de la variable est " test " bien sur )
- elseif $regex($3,/^(([[:alnum:]]+)=(\2)([+-])(\d{1,}))$/i) {
- var %mdpas = $regml(4) , %pas = $regml(5)
- }
- ; sinon , manger une pomme !
- else { forsyn | goto end }
- ; récupération du nom de bloc de commandes et de ses paramètres ...
- %commblc = $4
- if ($5-) { var %oparam = $5- }
- ; enfin , faire une boucle avec toutes les valeurs précédemment traitées :O)
- while (%deb %marche %fin) {
- ; appel du bloc de commande ^^ ...
- %commblc %deb $iif(%oparam,%oparam)
- ; ici , selon la valeu de %mdpas (+ ou -), faire un inc ou un dec :)
- $iif((%mdpas == +),inc,dec) %deb %pas
- }
- }
- else { forsyn }
- :end
- }
-
- /*
- Quelques explications sur les Regex:
- $regml(n) renvoit la nième partie du texte vérifiant le modèle
- ainsi, on peut récupérer CE QUE L'ON VEUT (n'est-ce pas génial ? :p)
- $regsub quant à lui à la prétention de faire une substitution de ce qu'on veut dans une chaîne de caractère par ce que l'on veut \o/
- */
-
- voila voila
; Boucle For
; -----------
alias for {
if ($4) {
if $regex($1,/^([[:alnum:]]+=\d{1,})/i) { var %deb , %debreg = $regsub($1,/([[:alnum:]]+=)/gi,,%deb) }
elseif $regex($1,/^([[:alnum:]]+)$/i) { var %deb = 0 }
else { forsyn | goto end }
if $regex($2,/(([[:alnum:]])(<|>|<=|>=)(\d{1,2}))/) { var %fin = $regml(4) , %marche = $regml(3) }
else { forsyn | goto end }
if $regex($3,/^(([+-])(\d{1,}))$/) { var %mdpas = $regml(2) , %pas = $regml(3) }
elseif $regex($3,/^(([[:alnum:]]+)((\+|-){2}))$/i) { var %mdpas = $left($regml(3),1) , %pas = 1 }
elseif $regex($3,/^(([[:alnum:]]+)=(\2)([+-])(\d{1,}))$/i) { var %mdpas = $regml(4) , %pas = $regml(5) }
else { forsyn | goto end }
%commblc = $4
if ($5-) { var %oparam = $5- }
while (%deb %marche %fin) { %commblc %deb $iif(%oparam,%oparam) | $iif((%mdpas == +),inc,dec) %deb %pas }
}
else { forsyn }
:end
}
alias -l forsyn {
echo -st $chr(2) $+ Incorrect Syntax in " FOR-loop "
echo -st $chr(160)
echo -st /for $for< $+ [NomVariable][=][Initialisation] $+ $for> $for< $+ [NomVariable][<|>|<=|>=][Fin] $+ $for> $for< $+ [+|-][Pas] $+ $for| $+ [NomVariable][++|--] $+ $for| $+ [NomVariable]=[NomVariable][+|-][Pas] $+ $for> $for< $+ [CommandBlocName] $+ $for> $for< $+ [OtherParameters] $+ $for>
echo -st $chr(160)
echo -st $fordb(Para 1:) $for< $+ [NomVariable][=][Initialisation] $+ $for> $fordb(Para 2:) $for< $+ [NomVariable][<|>|<=|>=][Fin] $+ $for>
echo -st $fordb(Para 3:) $for< $+ [+|-][Pas] $+ $for| $+ [NomVariable][++|--] $+ $for| $+ [NomVariable]=[NomVariable][+|-][Pas] $+ $for>
echo -st $fordb(Para 4:) $for< $+ [CommandBlocName] $+ $for> $fordb(Para 5:) $for< $+ [OtherParameters] $+ $for>
}
alias -l for< { return $+($chr(3),03,<,$chr(3)) }
alias -l for> { return $+($chr(3),03,>,$chr(3)) }
alias -l for| { return $+($chr(3),04,|,$chr(3)) }
alias -l fordb { return $+($chr(2),$1-,$chr(2)) }
; Exemple de Bloc de commandes
; -------------------------------------
alias commbloc {
; Para. $1 = %deb ; Other Parameters = $2-
echo -st -
echo -st command: $1
echo -st command: $1
echo -st Other Parameters: $2-
echo -st -
}
; FOR Loop (with comments)
; ------------------------
alias for {
; si tous les paramètres nécessaires existent ...
if ($4) {
; recherche de la valeure de l'initialisation ...
; en utilisant un $regsub, on récupère cette valeure !
if $regex($1,/^([[:alnum:]]+=\d{1,})/i) {
var %deb , %debreg = $regsub($1,/([[:alnum:]]+=)/gi,,%deb)
}
; si aucune valeure n'est précisée, alors prendre 0 !
elseif $regex($1,/^([[:alnum:]]+)$/i) {
var %deb = 0
}
; sinon , aller acheter un kébab ptdr
else { forsyn | goto end }
; recherche de la borne de la boucle ...
; à partir du $regex et donc des $regml(n), on récupère les valeurs qu'ils nous faut ^^
if $regex($2,/(([[:alnum:]])(<|>|<=|>=)(\d{1,2}))/) {
var %fin = $regml(4) , %marche = $regml(3)
}
; sinon , aller au macdo LOL
else { forsyn | goto end }
; recherche du pas de la boucle ...
; j'utilise ici 3 modèles de regex différents ^^
; cas ou +|-Pas est rentré
if $regex($3,/^(([+-])(\d{1,}))$/) {
var %mdpas = $regml(2) , %pas = $regml(3)
}
; cas ou NomVariable++|-- est rentré
elseif $regex($3,/^(([[:alnum:]]+)((\+|-){2}))$/i) {
var %mdpas = $left($regml(3),1) , %pas = 1
}
; cas ou NomVariable=NomVariable+Pas est rentré ^^
; ( attention: si vous mettez par exemple, test=machine+2 , ça ne marchera jamais . il faut mettre test=test+2 , si le nom de la variable est " test " bien sur )
elseif $regex($3,/^(([[:alnum:]]+)=(\2)([+-])(\d{1,}))$/i) {
var %mdpas = $regml(4) , %pas = $regml(5)
}
; sinon , manger une pomme !
else { forsyn | goto end }
; récupération du nom de bloc de commandes et de ses paramètres ...
%commblc = $4
if ($5-) { var %oparam = $5- }
; enfin , faire une boucle avec toutes les valeurs précédemment traitées :O)
while (%deb %marche %fin) {
; appel du bloc de commande ^^ ...
%commblc %deb $iif(%oparam,%oparam)
; ici , selon la valeu de %mdpas (+ ou -), faire un inc ou un dec :)
$iif((%mdpas == +),inc,dec) %deb %pas
}
}
else { forsyn }
:end
}
/*
Quelques explications sur les Regex:
$regml(n) renvoit la nième partie du texte vérifiant le modèle
ainsi, on peut récupérer CE QUE L'ON VEUT (n'est-ce pas génial ? :p)
$regsub quant à lui à la prétention de faire une substitution de ce qu'on veut dans une chaîne de caractère par ce que l'on veut \o/
*/
voila voila
Conclusion
Bonne utilisation && enjoy ^^
Historique
- 13 novembre 2006 05:02:50 :
- correction d'un ptit bug de rien du tout
- 13 novembre 2006 05:45:33 :
- rajout de la partie [OtherParameters] pour pouvoir utiliser la boucle partout " ou presque " :)
- 13 novembre 2006 06:39:55 :
- rajout d'autres possibilités pour le pas ^^
- 13 novembre 2006 06:48:43 :
- minor change
- 13 novembre 2006 06:51:07 :
- minor change
- 13 novembre 2006 07:20:39 :
- rajout d'une version commentée ^^
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Regex : help [ par MaX_62 ]
Bonjour, J'ai tenté de créer un alias pour supprimer les <balises> html ainsi que les &balises;J''ai fait ça :alias reg { var
P'tit prob de boucle :-/ [ par stevnet ]
Soir tout le monde !!voila j'essai de comprendre un peu les boucle ( sauf si c pas comme sa que sa s'appel :p) Code:alias ct { %w = $chan(0)&nbs
$regsub [ par Le_Corse ]
quelqun peut m'expliquer la commande $regsub svp ?» Le_Corse
pb avec boucle merci c urgent!! [ par texas77 ]
bonjour c un soucis avec ma boucle c kel change pa la kestion et el marhce pa tt le temp pour bone reponde et mauvaise merci de votre aide :on *:text:
Comment cree une boucle? [ par texas77 ]
Bonjour j'aimerai cree une boucle pour un quizz je essayer mais je n'y arrive pas . merci de m'aider
logiciel d'aide aux regex [ par tofu ]
Voilà, en surfant, par hasard jss tombé sur le logiciel: RegexBuddyj'ai vraiment été séduit par le concept et sa facilité
Help for Switch Bar [ par neqa ]
Bonjour @ tous voila je suis nouveau sur ce forum et j'aimerait un gros coup de pouce. Je souhaite crée ma switchbar mais je c'est vraiment pas comme
$regex [ par MegaSmax ]
Bonsoir, je voudrais ameliorer une partie de mon script. Je voudrais write dans fichier txt une url qui apparait sur un chan.Jai trouvé ca sur sc
Boucle While [ par RowN ]
Bonjour, cela fait tres longtemps que je n'ai aps coder en mirc, Je voudrais savoir comment associer une boucle while a une liste précise, exem
HELP for newbie [ par brebis_egaree ]
salut désolé si je poste la ou il faut pas mais je ne trouve pas de solution.je me suis fait apparemment bannir [01:45] irc.voila.fr -
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : AIDERE : AIDE par Nico26000
Cliquez pour lire la suite par Nico26000 RE : AIDERE : AIDE par WorldDMT
Cliquez pour lire la suite par WorldDMT AIDEAIDE par Nico26000
Cliquez pour lire la suite par Nico26000
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|