Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Run .bat file with execandwait()
neves
сообщение 3.4.2020, 17:40
Сообщение #1


***

Novice
Сообщений: 64
Регистрация: 4.10.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.419
Возраст: 19



I have very long .bat file with many settings, which STARTS and .exe file. I wanna execute this .bat file using execandwait() function, but it waits for the cmd to be executed and doesn't waits for the script in bat to be executed.
Example:
Lets say I have this test.bat file:
Код
START C:\Windows\NOTEPAD.EXE

With notepad.exe is hard to see the problem, so change the path to any application which loads slower. (Ex: D:\Game\CLIENT.EXE)
Then I start this script:
Код
--lua
wait(1000)
execandwait("D:\\test.bat")

And script stops before the given .EXE is executed.
Does anyone faced this problem and can it be solved?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 17:48
Сообщение #2


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



test.bat
Код
START /wait C:\Windows\System32\notepad.exe


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
neves
сообщение 3.4.2020, 18:09
Сообщение #3


***

Novice
Сообщений: 64
Регистрация: 4.10.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.419
Возраст: 19



It's not working as it should.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2020, 18:36
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Isn't it easier to launch the app from the uopilot?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 18:39
Сообщение #5


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



Цитата(cirus @ 3.4.2020, 18:36) *

Isn't it easier to launch the app from the uopilot?

neves, the same question


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
neves
сообщение 3.4.2020, 19:58
Сообщение #6


***

Novice
Сообщений: 64
Регистрация: 4.10.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.419
Возраст: 19



I have very long .bat file with many settings. I gave notepad.exe as an example.
Lets say that my bat looks like:
Код
start game.exe;name=user;ip=36.29.147.162;port=4747

I cannot start the .exe file without these settings, so I can't just use execandwait("game.exe") if you understand.
I need somehow to run that .bat file and wait for the program to load.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 21:11
Сообщение #7


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



UOpilot is able to start the apps with params - Exec


If u want to launch ur app by .bat in any ways, here is a solution:
test.bat:
Код
start game.exe;name=user;ip=36.29.147.162;port=4747
del D:\app.txt

Script:
Код
--lua
function exec_my_bat (path)
    write ([[D:\app.txt]], "1")
    exec(path)
    while not(s=="0") do s = fileexists ([[D:\app.txt]]);wait(5) end
end
---

exec_my_bat([[D:\test.bat]])
log("Launched!")


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2020, 21:24
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
--lua
exec ("C:\\test.bat")  -- run the application

local handle = nil
while handle == nil do   -- wait for it to open
    handle = findwindow("window name")
    wait (100)
end
log(111)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 21:31
Сообщение #9


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



Цитата(cirus @ 3.4.2020, 21:24) *

Код
handle = findwindow("window name")


If an app with the same window text is already running, this will not be a solution.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
neves
сообщение 3.4.2020, 21:45
Сообщение #10


***

Novice
Сообщений: 64
Регистрация: 4.10.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.419
Возраст: 19



Цитата(Fors1k @ 3.4.2020, 20:11) *

Script:
Код
--lua
function exec_my_bat (path)
    write ([[D:\app.txt]], "1")
    exec(path)
    while not(s=="0") do s = fileexists ([[D:\app.txt]]);wait(5) end
end
---
exec_my_bat([[D:\test.bat]])
log("Launched!")


This isn't actually waits for the application to load.
Цитата(cirus @ 3.4.2020, 20:24) *

Код
--lua
exec ("C:\\test.bat")  -- run the application

local handle = nil
while handle == nil do   -- wait for it to open
    handle = findwindow("window name")
    wait (100)
end
log(111)


Yes, that's a temporary solution, but I'm searching for better way to do it.


I found out that you can run batch script DIRECTLY in cmd.exe.
Is it possible to run the batch script in cmd.exe using exec()?

Something like this:?
Код
exec("cmd.exe", "START C:\Windows\NOTEPAD.EXE")
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2020, 22:02
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



execandwait - waits for the application to be closed, but will not open!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 3.4.2020, 22:11
Сообщение #12


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



Цитата(neves @ 3.4.2020, 21:45) *
I'm searching for better way to do it.

Lua and batch cant do waht u want.

U need to get the object of launched app, to be able to work with it.

This can solve ur problem absolutely:
Код
--lua
log "clear"
require "luaposh";PScode('void',{[[#}

$parameters ="ya.ru -t -l 1024"
$application="C:\Windows\System32\PING.EXE"
$appObj=Start-Process $application $parameters -PassThru
while ($appObj.MainWindowHandle -eq 0) {Sleep -m 5}      #This is an order to wait until the program window appears

]]})

log("Launched!")


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
neves
сообщение 3.4.2020, 22:21
Сообщение #13


***

Novice
Сообщений: 64
Регистрация: 4.10.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.419
Возраст: 19



Цитата(cirus @ 3.4.2020, 21:02) *

execandwait - waits for the application to be closed, but will not open!

Yes, my mistake! I am using translator in wiki pages and sometimes happens some misunderstandings due to translation.

Цитата(Fors1k @ 3.4.2020, 21:11) *

This can solve ur problem absolutely:

Ok, I'll try it.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 12:30
Designed by Nickostyle