2013-03-26 4 views
0

У меня есть несколько учетных записей Steam, которые я хочу запустить с помощью одного сценария Lua с параметрами, которые я указываю. У меня почти все отсортировано, за исключением запуска с кодом. Я не знаю, как «передать» переменную с этим форматом.os.execute variables

function Steam(n, opt1, opt2, opt3) 
os.execute[["start C:\Program" "Files\Sandboxie\Start.exe /box:Steam2 D:\Steam\steam.exe -login username password -opt1 -opt2 -opt3"]] 
end 

У меня есть имена пользователей и настройка Песочницы так, что только число нуждается в изменении (fenriros2, fenriros3, Steam2, Steam3 и т.д.) с тем же паролем.

В принципе, я хочу это;

Steam(3, -tf, -exit, -textmode) 

делать;

Я буду использовать -exit, чтобы закрыть окно lua после его завершения.

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

Любая помощь очень ценится, и я прошу прощения, если я пропустил что-то очевидное, я все еще довольно новичок в Lua.

+1

Вы действительно спрашиваете, как поставить цепочку вместе в Lua? Или как преобразовать целое число в строку? –

+0

Я спрашиваю, как я могу поместить переменную в os.execute с моей конфигурацией. Если это не разрешено, сообщите мне, и я удалю это. – Fenri

+0

'os.execute' берет * строку *. Поэтому вы спрашиваете, как взять строку и вставить значения одной или нескольких переменных в эту строку в определенном месте. –

ответ

2

Первый очевидный. [[]] Ограничивает строку, поэтому все, что вам нужно сделать, это создать переменную для строки и при необходимости заменить содержимое.

function Steam(n, opt1, opt2, opt3) 
-- Set up execute string with placeholders for the parameters. 
local strExecute = [["start C:\Program" "Files\Sandboxie\Start.exe /box:Steam{n} D:\Steam\steam.exe -login fenriros{n} password -{opt1} -{opt2} -{opt3}"]] 

-- Use gsub to replace the parameters 
-- You could just concat the string but I find it easier to work this way. 
strExecute = strExecute:gsub('{n}',n) 
strExecute = strExecute:gsub('{opt1}',opt1:gsub('%%','%%%%')) 
strExecute = strExecute:gsub('{opt2}',opt2:gsub('%%','%%%%')) 
strExecute = strExecute:gsub('{opt3}',opt3:gsub('%%','%%%%')) 
os.execute(strExecute) 
end 

Steam(1,'r1','r2','r3') 
+0

Благодарим вас и извиниться за то, что тратили свое время на это. Я как-то знал, что я натыкаюсь на что-то глупое. В любом случае, я очень благодарен за ваш ответ! – Fenri