Что нового

Работа с параметрами вида : "*.exe/.com" test

den-x

Новичок
Сообщения
46
Репутация
0
Работать с параметрами *.com мы не будем, но будем работать с *.exe . Обычно эта работа делается через командную строку в виде команд: "C:\windows\explorer.exe [Здесь параметр]".
Может ли AutoIt работать с параметрами .exe скрипта написанного на нём.
Пример:Запускаю свою программу написанную на AutoIt - Выводит сообщение:"Обычный режим",запускаю эту же программу но с параметром: test - Выводит сообщение:"Тестовый режим".
 

SyDr

Сидра
Сообщения
651
Репутация
158
Параметры командной строки (Command Line Parameters, CMD)
Специальный массив $CmdLine содержит параметры командной строки, переданные скрипту AutoIt при запуске. При этом имя файла скрипта не попадает в этот массив. Используйте макрос @ScriptName, если его необходимо получить. Параметры, содержащие пробелы, должны быть заключены в "двойные кавычки". Скомпилированный скрипт принимает параметры командной строки так же, как и исходный скрипт.

$CmdLine[0] - число параметров
$CmdLine[1] - параметр 1 (идущий после имени скрипта)
$CmdLine[2] - параметр 2 и т.д.
...
$CmdLine[$CmdLine[0]] - простой способ получить последний параметр...

В дополнение к $CmdLine существует переменная $CmdLineRaw, которая содержит параметры командной строки в исходном виде.

Обратите внимание, что $CmdLineRaw для нескомпилированных скриптов возвращает также и имя скрипта и параметры /ErrorStdOut, /AutoIt3ExecuteScript, если они есть.

Замечание: массив $CmdLine[...] может вернуть не более 63 параметров, а $CmdLineRaw всегда возвращает полную строку параметров.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
den-x,
Простой пример. Запускаете 1.au3 (1.exe):
Код:
If $CmdLine[0] Then
	For $i = 1 To $CmdLine[0]
		MsgBox(64, 'Info', $CmdLine[$i])
	Next
	MsgBox(64, 'Info', $CmdLineRaw)
Else
	MsgBox(64, 'Info', 'No parameters')
EndIf
Следующим скриптом:
Код:
$sFile = @ScriptDir & '\1.au3'
;$sFile = @ScriptDir & '\1.exe'
$s_Parameter = ''
For $i = 1 To 5
	$s_Parameter &= ' "' & $i & ' Test message"'
Next
If @Compiled Then
	Run('"' & @ScriptFullPath & '" /AutoIt3ExecuteScript "' & $sFile & '"' & $s_Parameter);1.au3
	;Run('"' & $sFile & '"' & $s_Parameter);1.exe
Else
	Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sFile & '"' & $s_Parameter);1.au3
	;Run('"' & @AutoItExe & '" "' & $sFile & '"' & $s_Parameter);1.exe
EndIf
 
Автор
D

den-x

Новичок
Сообщения
46
Репутация
0
madmasles, Всё разобрался, Спасибо
 
Верх