; Для теста создайте ярлык к этому файлу и в продолжении командной строки укажите параметры: число, путь (в кавычках), help, f (независимо от регистра).
#include <Array.au3>
$spr = Chr(1) ; выбираем разделитель который не может использоваться в ком-строке (непечатный символ)
$Esc = '[\\/-]?' ; набор допустимых экранирующих символов в параметрах, например \10, /10, -10, знак "?" разрешает отсутствие символа
Switch $CmdLine[0]
Case 1 To 3 ; определяем количество параметров которое является валидным
; отправляем массив параметров в строку, как раньше, но разделяя специальным разделителем, который легче парсить.
$ParamLine = $spr & _ArrayToString($CmdLine, $spr, 1) & $spr
; ищем число, например 3000
$aTmp = StringRegExp($ParamLine, $spr & $Esc & '(\d+?)' & $spr, 3)
If Not @error And UBound($aTmp) = 1 Then ; если нет ошибок (найдено) и если найден 1 (а не 2 однотипных параметра), то
$cmd_Timer = $aTmp[0] ; валидация прошла успешно и передаем найденный параметр специальной переменной
MsgBox(0, 'Число', $cmd_Timer)
Else
MsgBox(0, 'Ошибка', 'Не найдено число') ; иначе сообщение об ошибке
; Exit ; и выход... если сама утилита используется в ком-строке, то тут можно указать код выхода (без MsgBox)
EndIf
; ищем путь, например C:\
$aTmp = StringRegExp($ParamLine, $spr & $Esc & '([a-zA-Z]:\\[^/:*?"<>|' & $spr & ']+[^.\\' & $spr & '])' & $spr, 3)
If Not @error And UBound($aTmp) = 1 Then ; если найден только 1 параметр, то
If FileExists($aTmp[0]) Then ; проверяем что путь существует
$cmd_Path = $aTmp[0] ; назначаем переменной при успехе
MsgBox(0, 'Путь', $cmd_Path)
Else
MsgBox(0, 'Ошибка', 'Путь не существует.') ; сбой, параметры неверны
; Exit
EndIf
Else
MsgBox(0, 'Ошибка', 'Не указан путь или указано более одного') ; сбой, параметры неверны
; Exit ; выход закомментирован для нормальной работы примера
EndIf
; ищем один из двух ключей "?" или "help"
$aTmp = StringRegExp($ParamLine, '(?i)' & $spr & $Esc & '(\?|help)' & $spr, 3)
If Not @error And UBound($aTmp) = 1 Then
MsgBox(0, 'Сообщение', 'Это пример демонстрирующий обработку ком-строки')
EndIf
; ищем ключ f
$aTmp = StringRegExp($ParamLine, '(?i)' & $spr & $Esc & '(f)' & $spr, 3)
If Not @error And UBound($aTmp) = 1 Then $cmd_f = 1
; здесь может быть вызов функции или продолжить скрипт, зависит от построения конструкции
EndSwitch