Что нового

[Автоматизация] Передача параметров в AutoIT скрипт.

Heler

Знающий
Сообщения
70
Репутация
11
Привет! Понадобилось использовать передачу параметров в скрипт, и на основе переданых параметров запускать функционал. Покажите пожалуйста пример. ;)
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
Проще не бывает :smile:
Код:
if $CmdLine[0] > 0 Then
	Select
		Case $CmdLine[1] = "-s"
			MsgBox(0,"Info","Flag -s")
		Case $CmdLine[1] = "-f"
			MsgBox(0,"Info","Flag -f")
	EndSelect
EndIf

$CmdLine - переменная параметров
Кстати, можно поэксперементировать и соединить все $CmdLine[$i>0] а потом StringRegExp'ом их распарсить
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Nik_rus сказал(а):
Проще не бывает :smile:
Зато бывает сложнее и функциональнее :laugh:

Код:
If $CmdLine[0] = 0 Then
	Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptFullPath & '" -File "C:\test.txt" -Line "Some_Line"')
	Exit
EndIf

_OnCmdLineFunc("File", "_Cmd_Get")
_OnCmdLineFunc("Line", "_Cmd_Get")

Func _Cmd_Get($sArg)
	MsgBox(64, "", "Ком. строка: " & $sArg)
EndFunc

Func _OnCmdLineFunc($sArguments, $iFuncName)
	Local $sArgs = _GetCmdLineEx($CmdLineRaw, $sArguments, 1, "", "-")
	If @error Then Return SetError(1, 0, "")
	
	If $sArgs <> "" Then Call($iFuncName, $sArgs)
EndFunc

Func _GetCmdLineEx($sCmdLine, $sArg, $iStripQuotes=1, $sDefault="!NOT FOUND!", $sPar="/", $sVal="=:")
	$sPar = "[" & StringRegExpReplace($sPar, "([-^\\])", "\\\1") & "]"
	$sVal = "[" & StringRegExpReplace($sVal, "([-^\\])", "\\\1") & " ]"
	$sArg  = "\Q" & $sArg & "\E"
	
	Local $sRegExp = '(?i)^(?:|.*?\s)'&$sPar&$sArg&$sVal&'+(?:$|'&$sPar&'|((?:"[^"]*"|[^"])+?)(?:$|\s'&$sPar&'\w)).*'
	Local $sRetCmd = StringRegExpReplace($sCmdLine, $sRegExp, '\1')
	
	If @extended Then
		If $iStripQuotes Then $sRetCmd = StringRegExpReplace($sRetCmd, '\A"+|"+\z', '')
		Return $sRetCmd
	EndIf
	
	Return SetError(1, 0, $sDefault)
EndFunc
 
Верх