Met $CmdLine leest AutoIt de woorden die je meegeeft bij het starten van een script. Dat is handig als één script meerdere taken moet kunnen doen zonder dat je alles dubbel hoeft te bouwen.
Wat is het probleem?
Soms wil je één script dat normaal kan starten, maar ook een test kan doen of een map kan verwerken. Zonder parameters maak je dan snel meerdere losse scripts. Dat wordt rommelig.
Hoe werkt $CmdLine?
$CmdLine[0] zegt hoeveel woorden je hebt meegegeven. Daarna lees je de echte waarden uit met $CmdLine[1], $CmdLine[2] en zo verder.
$CmdLine[0]: aantal meegegeven woorden$CmdLine[1]: eerste keuze, zoalsopenoftest$CmdLine[2]: extra waarde, bijvoorbeeld een pad naar een map
Voorbeeldcode
Hieronder zie je een simpele aanpak met Switch. Zo blijft je script leesbaar.
#include <MsgBoxConstants.au3>
If $CmdLine[0] = 0 Then
MsgBox($MB_ICONINFORMATION, "Gebruik", "Start dit script met open, test of pad.")
Exit
EndIf
Switch StringLower($CmdLine[1])
Case "open"
MsgBox($MB_ICONINFORMATION, "Actie", "Normale start")
Case "test"
MsgBox($MB_ICONINFORMATION, "Actie", "Testmodus")
Case "pad"
If $CmdLine[0] < 2 Then
MsgBox($MB_ICONWARNING, "Let op", "Geef ook een map mee.")
Exit
EndIf
MsgBox($MB_ICONINFORMATION, "Map", "Meegegeven map: " & $CmdLine[2])
Case Else
MsgBox($MB_ICONERROR, "Onbekend", "Ik ken deze parameter niet.")
EndSwitch
Wanneer is dit handig?
- als hetzelfde script soms normaal en soms in testmodus moet draaien
- als je een map, bestandsnaam of gebruiker wilt meegeven
- als je een script vanuit Taakplanner of een ander programma start
Veelgemaakte fout
Veel mensen vergeten eerst te controleren of er wel genoeg parameters zijn meegegeven. Dan lees je bijvoorbeeld $CmdLine[2] uit terwijl die niet bestaat. Controleer daarom altijd eerst $CmdLine[0].
Bevers gedachte
Een script met nette parameters voelt meteen slimmer aan. Minder losse bestanden, minder gedoe, en de bever houdt van minder gedoe.
