Oft ist erwünscht, dass ein Skript abhängig vom Ergebnis einer oder mehrerer Bedingungen unterschiedlich reagiert. Ist eine Zahl größer als eine andere? Beinhaltet ein String einen bestimmten Teil-String?
Bedingungen (Konditionen) werden als true (wahr, non-zero, nicht-null) oder false (falsch, zero, Null) ausgewertet. Bedingungen nutzen im Allgemeinen Vergleichsoperatoren wie z.B. ==, <>, >=.
Folgende konditionelle Ausdrücke sind in AutoIt verfügbar:
Alle diese drei Ausdrücke sind ähnlich und entscheiden welcher Code abhängig von den Bedingungnen ausgeführt wird . Hier im Beispiel eine If-Abfrage, die eine Message Box abhängig vom Wert einer Variable zeigt
$var = -20
If $var > 0 Then
MsgBox(0, "Beispiel", "$var war positiv!")
ElseIf $var < 0 Then
MsgBox(0, "Beispiel", "$var war negativ!")
Else
MsgBox(0, "Beispiel", "$var war null.")
EndIf
In dem obigen Beispielwird der Ausdruck $var > 0 als false bewertet, da die Variable kleiner als 0 ist. Wenn die erste Bedingung nicht wahr ist, wird die zweite Bedingung getestet. Der Ausdruck $var < 0 wird mit true bewertet. Dies bewirkt, dass die zweite MsgBox Zeile ausgeführt wird und "$var war negativ!" dargestellt wird.
Eine Select-Abfrage ist sehr ähnlich, aber wird normalerweise nur benutzt, wenn man eine große Anzahl von Bedingungen testen möchten. Diese Abfrage ist meist kürzer als eine entsprechende If/Else-Konstruktion, z.B.:
$var = 30
Select
Case $var > 1 AND $var <= 10
MsgBox(0, "Beispiel",
"$var war größer als 1")
Case $var > 10 AND $var <= 20
MsgBox(0, "Beispiel",
"$var war größer als 10")
Case $var > 20 AND $var <= 30
MsgBox(0, "Beispiel",
"$var war größer als 20")
Case $var > 30 AND $var <= 40
MsgBox(0, "Beispiel",
"$var war größer als 30")
Case $var > 40
MsgBox(0, "Beispiel",
"$var war größer als 40")
EndSelect
Eine Switch-Anweisung ist einer Select-Anweisung recht ähnlich, wird aber meist dann verwendet, wenn man den gleichen Ausdruck gegen viele verschiedene Werte testen will.
$var = 30
Switch Int($var)
Case 1 To 10
MsgBox(0, "Beispiel",
"$var war größer als 1")
Case 11 To 20
MsgBox(0, "Beispiel",
"$var war größer als 10")
Case 21 To 30
MsgBox(0, "Beispiel",
"$var war größer als 20")
Case 31 To 40
MsgBox(0, "Beispiel",
"$var war größer als 30")
Case Else
MsgBox(0, "Beispiel",
"$var war größer als 40 oder kleiner gleich 0")
EndSwitch
Bei jeder dieser Strukturen wird der erste erste Ausdruck der wahr ist dessen Befehle ausgeführt. Alle folgenden Bedingungen und derren zugehörigen Befehle werden ignoriert.