snipersu28
12-08-2016, 08:36
Доброго времени суток. Столкнулся с такой проблемой:
Имеется: 6 компьютеров с Oculus Rift с клиентской игрой, и 1 компьютер серверный .
Требуется: При запуске 6 компьютеров игровых, надо что б автоматически запускалась программа для работы Oculus Rift (в настройке прграммы этой ф-ции нет), и клиент игры. Мониторов у компьютеров нет, да и не нужны они, но каждый раз при запуске вручную запускать довольно надоедливо, да и в случае неполадок, просто перезагрузить компьютер - было бы идеальным решением.
Что уже сделано: Самое интересное с чем я столкнулся, что Oculus не хотел запускаться обычными способами в автозапуске, если его ярлык поместить в автозагрузку, пробовал все варианты что знал сам и что нашел в интернете, реестр там, в папку в пуске автозагрузки, в общем тщетно. И только потом подумал, что можно сделать скрипт в .bat Файле , на запуск этих программ и уже bat файл встваить в автозагрузку, все заработало, только что требует каждый раз подтверждение администратора, просто нажать кнопку "ОК", но в этом теряется весь смысл, если для запуска надо опять по каждому компу проходить. В итоге вычитал где-то про планировщик задач, добавил в него выполнение бэтки, и поставил максимальные права, и выполнение этой задачи уже добавил в автозагрузку.
Радости моей не было предела, но единственное что иногда бывало что прграмма для очков Oculus не запускалась, не знаю почему, может не успевала , но если ее открыть еще раз вручную то все ок. В итоге решил так что добавил ожидание перед началом выполнение скрипта 10 секунд, что б комп успел сам загрузиться, потом выполнял запуск программы и игрового клиента, и после запуска добавил проверку, если этот процесс действительно появился в диспетчере задач, если ок, тогда ничего, иначе запусти ее еще раз. И всё стало супер, единственное что , после добавления этой проверки перестало закрываться само окно bat файла, как будто бы недоконца выполнился скрипт и он чего-то ждет, хотя обе программы уже запустились, но стоит закрыть вручную это bat окно , как программа Oculus закрывается тоже.
Собственно вопрос: Как сделать так что бы оно закрывалось после открытия обеих программ само (что в принципе оно и должно делать), просто уверен что прблема в написанном скрипте. Или как сделать так что б если его закрываешь, не закрывалась программа которую она открыла.
OculusClient.exe это программа для очков
Cosmos_Launcher.exe это сам клиент игры.
На скриншоте уже обе прграммы открыты, но окно не пропадает, и если его закрыть, то закроется сам Oculus.
Сам скрипт здесь:
@echo off
ping -n 10 127.0.0.1 > nul //Ожидание 10 секунд, что б дать запуститься системе
cd "C:\Program Files\Oculus\Support\oculus-client"
start OculusClient.exe //Запуск окулуса
ping -n 5 127.0.0.1 > nul //Подождать пока запустится
SetLocal EnableExtensions //Проверка если запустился, если нет, то попрбовать снова
Set ProcessName=OculusClient.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 Start C:\Program Files\Oculus\Support\oculus-client\%ProcessName%
cd "C:\COSMOS\Player" //Тоже самое только с игровым клиентом
start COSMOS_Launcher.exe
SetLocal EnableExtensions
Set ProcessName=COSMOS_Launcher.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 Start C:\COSMOS\Player\%ProcessName%
Уверен что ошибка в моей писанине, то ли if не закрыт правильно, то ли exit не хватает, посоветуйте что-нибудь
И вопрос на будущее, возможно ли как-то в реальном времени проверять, если вдруг игровой клиент не запущен дважды, или запретить каким-то образом его запуск дважды.
Спасибо большое заранее за ваши ответы. Мой первый пост, до этого был только читателем, очень надеюсь на вашу помощь ;-)
Имеется: 6 компьютеров с Oculus Rift с клиентской игрой, и 1 компьютер серверный .
Требуется: При запуске 6 компьютеров игровых, надо что б автоматически запускалась программа для работы Oculus Rift (в настройке прграммы этой ф-ции нет), и клиент игры. Мониторов у компьютеров нет, да и не нужны они, но каждый раз при запуске вручную запускать довольно надоедливо, да и в случае неполадок, просто перезагрузить компьютер - было бы идеальным решением.
Что уже сделано: Самое интересное с чем я столкнулся, что Oculus не хотел запускаться обычными способами в автозапуске, если его ярлык поместить в автозагрузку, пробовал все варианты что знал сам и что нашел в интернете, реестр там, в папку в пуске автозагрузки, в общем тщетно. И только потом подумал, что можно сделать скрипт в .bat Файле , на запуск этих программ и уже bat файл встваить в автозагрузку, все заработало, только что требует каждый раз подтверждение администратора, просто нажать кнопку "ОК", но в этом теряется весь смысл, если для запуска надо опять по каждому компу проходить. В итоге вычитал где-то про планировщик задач, добавил в него выполнение бэтки, и поставил максимальные права, и выполнение этой задачи уже добавил в автозагрузку.
Радости моей не было предела, но единственное что иногда бывало что прграмма для очков Oculus не запускалась, не знаю почему, может не успевала , но если ее открыть еще раз вручную то все ок. В итоге решил так что добавил ожидание перед началом выполнение скрипта 10 секунд, что б комп успел сам загрузиться, потом выполнял запуск программы и игрового клиента, и после запуска добавил проверку, если этот процесс действительно появился в диспетчере задач, если ок, тогда ничего, иначе запусти ее еще раз. И всё стало супер, единственное что , после добавления этой проверки перестало закрываться само окно bat файла, как будто бы недоконца выполнился скрипт и он чего-то ждет, хотя обе программы уже запустились, но стоит закрыть вручную это bat окно , как программа Oculus закрывается тоже.
Собственно вопрос: Как сделать так что бы оно закрывалось после открытия обеих программ само (что в принципе оно и должно делать), просто уверен что прблема в написанном скрипте. Или как сделать так что б если его закрываешь, не закрывалась программа которую она открыла.
OculusClient.exe это программа для очков
Cosmos_Launcher.exe это сам клиент игры.
На скриншоте уже обе прграммы открыты, но окно не пропадает, и если его закрыть, то закроется сам Oculus.
Сам скрипт здесь:
@echo off
ping -n 10 127.0.0.1 > nul //Ожидание 10 секунд, что б дать запуститься системе
cd "C:\Program Files\Oculus\Support\oculus-client"
start OculusClient.exe //Запуск окулуса
ping -n 5 127.0.0.1 > nul //Подождать пока запустится
SetLocal EnableExtensions //Проверка если запустился, если нет, то попрбовать снова
Set ProcessName=OculusClient.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 Start C:\Program Files\Oculus\Support\oculus-client\%ProcessName%
cd "C:\COSMOS\Player" //Тоже самое только с игровым клиентом
start COSMOS_Launcher.exe
SetLocal EnableExtensions
Set ProcessName=COSMOS_Launcher.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 Start C:\COSMOS\Player\%ProcessName%
Уверен что ошибка в моей писанине, то ли if не закрыт правильно, то ли exit не хватает, посоветуйте что-нибудь
И вопрос на будущее, возможно ли как-то в реальном времени проверять, если вдруг игровой клиент не запущен дважды, или запретить каким-то образом его запуск дважды.
Спасибо большое заранее за ваши ответы. Мой первый пост, до этого был только читателем, очень надеюсь на вашу помощь ;-)