Что нового

Запуск сприпта (в ехе) с нужными параметрами

Trans

Знающий
Сообщения
257
Репутация
6
Ребят, подскажите как запустить скомпилированный скрипт при этом передав ему 2 строки, а именно логин и пароль, из другого скрипта
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
1
Код:
Local $sLogin = "user"
Local $sPass = "password"

Run( '2.exe /login="' & $sLogin & '" /password="' & $sPass & '"' )


2
Код:
Local $vLogin = StringRegExp( $CmdLineRaw, '/login="([^\"]+)"', 1 )
	If IsArray( $vLogin ) Then $vLogin = $vLogin[0]

Local $vPass = StringRegExp( $CmdLineRaw, '/password="([^\"]+)"', 1 )
	If IsArray( $vPass ) Then $vPass = $vPass[0]

MsgBox( 64, "", "Login=" & $vLogin & @LF & "Pass=" & $vPass )


*Поправил упущенный момент с кавычкой.
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
Вот только в строке пароля выдаёт значение 0 :(
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Trans
Вот такой код поместить в клиента:
Код:
Opt('MustDeclareVars', 1)

Local $sStrCmdLine = '', $aArr

If $CmdLine[0] Then
	For $i = 1 To UBound($CmdLine) - 1
		$sStrCmdLine &= $CmdLine[$i]
	Next
	For $i = 1 To UBound($CmdLine) - 1
		RunWithCmdPar(StringRegExpReplace($CmdLine[$i], '[\\/-]', ''))
		If $i == UBound($CmdLine) - 1 Then Exit
	Next
EndIf

Func RunWithCmdPar($a)
	$aArr = StringRegExp($sStrCmdLine, $a, 3)
	If IsArray($aArr) Then
		Switch $aArr[0]
			Case 'A_cr'
				ConsoleWrite('A' & @LF)
			Case 'B'
				ConsoleWrite('B' & @LF)
			Case 'C'
				ConsoleWrite('C' & @LF)
			Case 'D'
				ConsoleWrite('D' & @LF)
			Case 'E'
				ConsoleWrite('E' & @LF)
			Case 'help'
				ConsoleWrite('Show Mes...' & @LF)
				MsgBox(64, 'Help', 'help')
		EndSwitch
	EndIf
EndFunc   ;==>RunWithCmdPar

ConsoleWrite('Continue job...' & @LF)

Соответственно значения менять на свои.
Это обработка переданных параметров. Если параметры переданы, то клиент обработает их и завершит работу. Если параметры не переданы то продолжит работу. Немного изменить регулярное выражение для пароля и логина.
В принципе смысл тот же, что предложил firex.
 
Автор
T

Trans

Знающий
Сообщения
257
Репутация
6
ivsatel вариант firex больше подходит) вот надо решить проблему с паролем)
 

_dron_

Знающий
Сообщения
84
Репутация
8
Код:
Run( '2.exe /login="' & $sLogin & '" /password="' & $sPass & '"');<------- & '"'


исправь

зы: в конце не хватает ковычки вот и не работает
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Или так:
Код:
Opt('MustDeclareVars', 1)

Local $sStrCmdLine = '', $aArr, $aLogin, $aPassword

If $CmdLine[0] Then
	For $i = 1 To UBound($CmdLine) - 1
		$sStrCmdLine &= $CmdLine[$i] & ' '
	Next
	For $i = 1 To UBound($CmdLine) - 1
		RunWithCmdPar(StringRegExpReplace($CmdLine[$i], '[\\/-]', ''))
		If $i == UBound($CmdLine) - 1 Then
			MsgBox(64, 'Переданные параметры', '$aLogin = '&$aLogin[0]&@LF&'$aPassword = '&$aPassword[0])
			Exit
		EndIf
	Next
EndIf

Func RunWithCmdPar($a)
	$aLogin = StringRegExp($sStrCmdLine, '(?is).*?login=(\S+)\s?', 3)
	$aPassword = StringRegExp($sStrCmdLine, '(?is).*?password=(\S+)\s?', 3)
EndFunc   ;==>RunWithCmdPar

ConsoleWrite('Continue job...' & @LF)


Проверить так:
Код:
"C:\Program Files\AutoIt3\AutoIt3.exe" /ErrorStdOut "C:\Documents and Settings\User\Local Settings\Temp\temp.au3" login=user password=123456
 
Верх