Что нового

Передать переменные exe файлу

mfcs

Новичок
Сообщения
13
Репутация
0
Задача такая. Нужно передать переменные exe файлу, самым простым и компактным образом.

Этот exeшник будет срабатывать в середине всего процесса. От него требуется, просто запускать программу, имея одну строку, с функцией "Run" и переменными.

Код:
Run("'program.exe' " $1 & $2 & $3)


Пытался уже реализовать подобное через созданный ранее log файл, и после, его прочтением. Но при написании, как то это забросил. Сейчас, снова придя к этому, решил сразу написать сюда, что бы иметь побольше информации.

Заранее благодарю:smile:
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Одиночные кавычки уберите. Если не получится - покажите содержимое переменных.
 
Автор
M

mfcs

Новичок
Сообщения
13
Репутация
0
Одиночные кавычки уберите. Если не получится - покажите содержимое переменных.
Как и было, появляется ошибка об отсуствии информации о переменных.

Что бы я не вписывал в переменные, выдает ошибку.

Код:
$1 = "-param1 -param2"
$2 = "-param3 -param4"
$3 = "-param5 -param6"
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Отсутствует & перед $1.

Выведите строку запуска в консоль или в сообщение и посмотрите, что получается. Явно пробелов не хватает
Код:
$1 = "-param1 -param2"
$2 = "-param3 -param4"
$3 = "-param5 -param6"
$s = "program.exe " & $1 & $2 & $3
MsgBox(0, "", $s)
;~ Run($s)

Сообщение автоматически объединено:

Просто удалите пробел в конце названия программы, а каждый параметр начинайте с пробела.
 
Последнее редактирование:
Автор
M

mfcs

Новичок
Сообщения
13
Репутация
0
Отсутствует & перед $1.

Выведите строку запуска в консоль или в сообщение и посмотрите, что получается. Явно пробелов не хватает
Код:
$1 = "-param1 -param2"
$2 = "-param3 -param4"
$3 = "-param5 -param6"
$s = "program.exe " & $1 & $2 & $3
MsgBox(0, "", $s)
;~ Run($s)

Сообщение автоматически объединено:

Просто удалите пробел в конце названия программы, а каждый параметр начинайте с пробела.
Извиняюсь что превожу плохие примеры. Все пробелы поставлены правильно, тем более что скрипт до компиляции, работает через include.

Сначала вы написали, убрать одиночные кавычки. Я подумал, окей попробую. Немного поправил, но ничего не изменилось.

Было
Код:
Run('"program.exe" ' $1 &' '& $2 &' '& $3 &' '& $4 &' '& $5 &' '& $6)


Стало
Код:
Run("program.exe" &" "& $1 &" "& $2 &" "& $3 &" "& $4 &" "& $5 &" "& $6)
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Здесь у вас кавычки совсем не так расставлены, как в описании темы.

Синтаксически - правильно. Разбирайтесь в параметрами.

Ещё раз повторю: проверьте строку запуска
Код:
$1 = " -param1"
$2 = " -param2"
$3 = " -param3"
$4 = " -param4"
$5 = " -param5"
$6 = " -param6"
; проверка правильности строки запуска
MsgBox(0, "", "program.exe" & $1 & $2 & $3 & $4 & $5 & $6)
;~ Run("program.exe" & $1 & $2 & $3 & $4 & $5 & $6)


тем более что скрипт до компиляции, работает через include
Вообще не понял...
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
а если попробовать через ShellExecute
Код:
ShellExecute('program.exe', $1 & ' ' & $2 & ' ' & $3)

Но склоняюсь к тому, что вы не совсем правильно передаете параметры
 
Последнее редактирование:

IMStrelcov

CTPEJIbLLOB
Сообщения
258
Репутация
66
Код:
;запустите данный скрипт и посмотрите как передадутся параметры
;так поймете как их передавать с кавычками или без
;обратите на параметр 3 и 4 и 5 как ведут себя кавычки

If Not $CmdLine[0] Then
   $Param1 = ' -Параметр1 Значение_Без_Кавычках_Без_Пробелов'
   $Param2 = ' -Параметр2 "Значение В Кавычках С Пробелами"'
   $Param3 = ' -Параметр3 """Значение В Кавычках С Пробелами"""'
   $Param4 = ' -Параметр4 " ""Значение В Кавычках С Пробелами"""'
   $Param5 = ' "-Параметр5 ""Значение В Кавычках С Пробелами"""'
   $Param6 = ' -Параметр6 Значение Без Кавычек С Пробелами'
   Run(@AutoItExe&' /ErrorStdOut "'& @ScriptFullPath& '"'&  $Param1& $Param2& $Param3& $Param4& $Param5& $Param6)
   Exit
EndIf

$sParams = ''
$sRun = 'Run(''Program.exe'
For $iParam = 1 To $CmdLine[0]
   $sParams &= ' '& $CmdLine[$iParam]&@CRLF
   $sRun &= ' '& $CmdLine[$iParam]
Next
$sRun &= ''')'

MsgBox(0, 'Проверка', _
'Полная строка запуска:'& @CRLF& _
$sRun& @CRLF&@CRLF& _
'Всего параметров: '& $CmdLine[0]& @CRLF&@CRLF& _
$sParams)
 
Верх