From WikiChip
Difference between revisions of "mirc/commands/while"
< mirc‎ | commands

(Example)
(Synopsis)
Line 4: Line 4:
 
== Synopsis ==
 
== Synopsis ==
 
  while (condition) {
 
  while (condition) {
   statements or commands
+
   repetitive operations and commands
  statements or commands
 
  statements or commands
 
 
  }
 
  }
  

Revision as of 05:43, 1 September 2025

The /while command is a construct in the mIRC scripting language that can perform repetitive operations. The block of statements and commands inside the body of the while loop will be executed as long as the condition is true. You can manually break out of a loop by using the Cltr+Break key combinations.

Synopsis

while (condition) {
  repetitive operations and commands
}

Switches

None

Parameters

None

Example

Basic construct

;Create a counter variable, set its value to 1
var %i 1
 
;Create a stop variable with a value equal to the number at which you want to stop the loop.
var %stop 5
 
;Start of loop with a condition in round brackets () - work while the number in the variable %i is less than or equal to the number in the variable %stop
while (%i <= %stop) {
 
  ;Print echo message to active window with value of counter variable
  echo -a Number in counter: %i
 
  ;Increase the counter variable by +1
  inc %i
}

Note: Use this or a similar construct/snippet of code inside any of your aliases or scripts as shown in the examples to create a loop.


Example of a simple counter to count the number of iterations of a loop

;Count the number of iterations from 1 to 5
alias whilecounter {
  var %i 1, %stop 5
  while (%i <= %stop) {
    echo -a Number in counter: %i
    inc %i
  }
}
 
;To call the alias use the command: /whilecounter

The above example will output:

Number in counter: 1
Number in counter: 2
Number in counter: 3
Number in counter: 4
Number in counter: 5


Example of reading a file by iterating over each line

;Read all lines of a file
alias whilereadfile {
  var %i 1 | while (%i <= $lines(file.txt)) {
    echo -a line %i - $read(file.txt,nt,%i)
    inc %i
  }
}
 
;To call the alias use the command: /whilereadfile
 
 
;Read from line 5 and stop at line 10
alias whilereadfile2 {
  var %i 5 | while (%i <= $lines(file.txt)) {
    echo -a line %i - $read(file.txt,nt,%i)
    if (%i == 10) break
    inc %i
  }
}
 
;To call the alias use the command: /whilereadfile2


Example of how to print a list all variable names with their values

alias whilelistvars {
  ;Check if there are any variables set
  if (!$var(*,0)) {
    echo -a There Are No Variables.
    ;Return command to terminate alias function
    return
  } 
 
  ;Set a counter variable
  var %x 1
 
  ;Loop while the counter variable is less than or equal to the total number of variables
  while (%x <= $var(*,0)) { 
 
    ;Print out the variable and its value
    echo -a %x $+ ) $var(*,%x) = $var(*,%x).value 
 
    ;Increase the variable by one
    inc %x
  }
}
 
;To call the alias use the command: /whilelistvars

The above example will output something like this:

1) %Var = Value
2) %Foo = FooBar
3) %Bar = BarFoo


Example of how to print a list all open windows with their names

;Count the number of all open windows
alias whilewindows {
  echo -a Channel windows: $+([,$chan(0),])
  var %c 1 | while (%c <= $chan(0)) { echo -a %c : $chan(%c) | inc %c }
  echo -a $str(-,30)
 
  echo -a Private windows: $+([,$query(0),])
  var %q 1 | while (%q <= $query(0)) { echo -a %q : $query(%q) | inc %q }
  echo -a $str(-,30)
 
  echo -a Custom windows: $+([,$window(0),])
  var %w 1 | while (%w <= $window(0)) { echo -a %w : $window(%w) | inc %w }
  echo -a $str(-,30)
  
  echo -a Dialog windows: $+([,$dialog(0),])
  var %d 1 | while (%d <= $dialog(0)) { echo -a %d : $dialog(%d) | inc %d }
  echo -a $str(-,30)
}
 
;To call the alias use the command: /whilewindows

Compatibility

Added: mIRC v5.7
Added on: 02 Feb 2000
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.


See also

v · d · e mIRC commands list

A /abook, /action, /add, /ajinvite, /alias, /aline, /ame, /amsg, /anick, /aop, /auser, /auto, /autojoin, /avoice, /away

B /background, /ban, /bcopy, /beep, /bindip, /bread, /break, /breplace, /bset, /btrunc, /bunset, /bwrite

C /channel, /clear, /clearall, /clearial, /cline, /clipboard, /close, /closechats, /closedccs, /closefserves, /closemsg, /cnick, /color, /colour, /comclose, /comlist, /commands, /comopen, /comreg, /continue, /copy, /creq, /ctcp, /ctcpreply, /ctcps

D /dcc, /dccserver, /dde, /ddeserver, /debug, /dec, /describe, /dialog, /did, /didtok, /disable, /disconnect, /dlevel, /dline, /dll, /donotdisturb, /dns, /dqwindow, /drawcopy, /drawdot, /drawfill, /drawline, /drawpic, /drawrect, /drawreplace, /drawrot, /drawsave, /drawscroll, /drawsize, /drawtext

E /ebeeps, /echo, /editbox, /else, /elseif, /emailaddr, /enable, /events, /exit

F /fclose, /filter, /findtext, /finger, /firewall, /flash, /flist, /flood, /flush, /flushini, /fnord, /font, /fopen, /fseek, /fsend, /fserve, /fullname, /fupdate, /fwrite

G /ghide, /gload, /gmove, /gopts, /goto, /gplay, /gpoint, /gqreq, /groups, /gshow, /gsize, /gstop, /gtalk, /gunload, /guser

H /hadd, /halt, /haltdef, /hdec, /hdel, /help, /hfree, /hinc, /hload, /hmake, /hotlink, /hop, /hsave

I /ial, /ialclear, /ialmark, /identd, /if, /ignore, /iline, /inc, /iuser

J /join

L /leave, /linesep, /links, /list, /load, /loadbuf, /localinfo, /log, /logview

M /maxdepth, /mdi, /me, /menubar, /mkdir, /mnick, /mode, /msg

N /noop, /notice, /notify

O /onotice, /omsg

Q /qme, /qmsg, /query, /queryrn, /quit, /quote

P /parseline, /part, /partall, /pdcc, /perform, /play, /playctrl, /pop, /protect, /proxy, /pvoice

R /raw, /registration, /reload, /remini, /remote, /remove, /rename, /renwin, /reseterror, /resetidle, /return, /returnex, /rlevel, /rline, /rmdir, /run, /ruser

S /save, /savebuf, /saveini, /say, /scid, /scon, /server, /set, /setlayer, /showmirc, /signal, /sline, /sockaccept, /sockclose, /socklist, /socklisten, /sockmark, /sockopen, /sockpause, /sockread, /sockrename, /sockudp, /sockwrite, /sound, /speak, /splay, /sreq, /strip, /switchbar

T /timer, /timestamp, /tip, /tips, /titlebar, /tnick, /tokenize, /toolbar, /topic, /tray, /treebar

U /ulist, /unload, /unset, /unsetall, /updatenl, /url, /username, /uwho

V /var, /vcadd, /vcmd, /vcrem, /vol

W /wallchops, /wavplay, /while, /window, /winhelp, /write, /writeini

X /xyzzy