Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите оптимизировать код

Ответить
Настройки темы
CMD/BAT - Помогите оптимизировать код
n4! n4! вне форума

Новый участник


Сообщения: 18
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: n4!
Дата: 05-04-2008
Описание: с 1 проблемой разобрался
Итак, вот сам код:
Код: Выделить весь код
taskkill /F /IM hl.exe /T
if exist cstrike\myAC\myAC.exe  goto cl
xcopy %MYFILES%\acdev.sys cstrike\myAC\acdev.sys <temp.tmp
xcopy %MYFILES%\config.ini cstrike\myAC\config.ini <temp.tmp
xcopy %MYFILES%\libeay32.dll cstrike\myAC\libeay32.dll <temp.tmp
xcopy %MYFILES%\libssl32.dll cstrike\myAC\libssl32.dll <temp.tmp
xcopy %MYFILES%\myAC.exe cstrike\myAC\myAC.exe <temp.tmp
:cl
start cstrike\myAC\myAC.exe
if exist cstrike\admaster.cfg  goto cool
xcopy %MYFILES%\admaster.cfg cstrike\admaster.cfg <temp.tmp
attrib +h +r +s cstrike\admaster.cfg
if exist cstrike\Uzjeigral.adm  goto col
copy %windir%\system32\nvoglnt.dll gldrv\nvoglnt.dll
echo gldrv/nvoglnt.dll > gldrv/drvmap.txt
xcopy Uzjeigral.adm cstrike\Uzjeigral.adm <temp.tmp
attrib +h +r +s cstrike\Uzjeigral.adm
:cool
:col
ping -n 3 localhost > nul
start /low /w hl.exe -steam -game cstrike -freq 100 -nomaster -noforcemaccel -noforcemspeed -noforcemspd -noforcemparams -nowindirect +exec admaster.cfg
taskkill /F /IM myAC.exe /T
Что же в нем оптимизировать? Ну дело в том, что при запуске, он запускается 8-10 секунд, что является весьма долгим процессом (это при условии if exist cstrike\myAC\myAC.exe goto cl), если же без этого условия то и вовсе 20-30 секунд.
Есть ещё 1 вопросик, после taskkill /F /IM myAC.exe /T в трее остаться значок программы, если на него навести мышкой – он исчезает, нет ли команды которая бы обновляла трэй автоматически?
Заранее спасибо

Отправлено: 14:53, 05-04-2008

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


- 3 сек теряется на "PING -N 3", насколько эта пауза необходима?.. может поискать другие пути определения запуска?.. параметры файлов, реестра, etc.
- чем вызвано использование XCOPY вместо простого COPY ?.. визуально не вижу предпосылок... И если XCOPY зачем <temp.tmp ?.. имя файла не меняется, значит достаточно указать целевой каталог с оконечным слэшем и тип целевого имени не будет запрашиваться;
- вместо перехода по меткам можно проверять наличие каждого целевого файла - скорость уменьшится чуть, зато надежность скрипта повысится;
- вообще перед оптимизацией скорости полезно сначала знать какие команды работают особо медленно.

ну, я бы сделал что-то типа такого:
Код: Выделить весь код
Taskkill /F /IM hl.exe /T

SET DEST=Cstrike\myAC
:: ---
If Not Exist %DEST%\acdev.sys    Copy /Y %MYFILES%\acdev.sys    %DEST%\acdev.sys
If Not Exist %DEST%\config.ini   Copy /Y %MYFILES%\config.ini   %DEST%\config.ini
If Not Exist %DEST%\libeay32.dll Copy /Y %MYFILES%\libeay32.dll %DEST%\libeay32.dll
If Not Exist %DEST%\libssl32.dll Copy /Y %MYFILES%\libssl32.dll %DEST%\libssl32.dll
If Not Exist %DEST%\myAC.exe     Copy /Y %MYFILES%\myAC.exe     %DEST%\myAC.exe

Start %DEST%\myAC.exe

SET DEST=Cstrike
:: ---
If Not Exist %DEST%\admaster.cfg (
	Copy /Y %MYFILES%\admaster.cfg %DEST%\admaster.cfg
	Attrib +h +r +s %DEST%\admaster.cfg
)
If Not Exist %DEST%\Uzjeigral.adm (
	Copy /Y Uzjeigral.adm %DEST%\Uzjeigral.adm
	Attrib +h +r +s %DEST%\Uzjeigral.adm
)

SET DEST=GLDrv
:: ---
If Not Exist %DEST%\nvoglnt.dll Copy /Y %WinDir%\System32\nvoglnt.dll %DEST%\nvoglnt.dll

Ping -n 3 localhost >nul
Start /low /w hl.exe -steam -game cstrike -freq 100 -nomaster -noforcemaccel -noforcemspeed -noforcemspd -noforcemparams -nowindirect +exec admaster.cfg
Taskkill /F /IM myAC.exe /T
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:58, 07-04-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

n4! n4! вне форума Автор темы

Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо, все стало работать очень быстро (~за 1 сек.), есть только пару вопросов:
Вот кусок кода:
Код: Выделить весь код
SET DEST=Cstrike\myAC
:: ---
If Not Exist %DEST%\acdev.sys    Copy /Y %MYFILES%\acdev.sys    %DEST%\acdev.sys
If Not Exist %DEST%\config.ini   Copy /Y %MYFILES%\config.ini   %DEST%\config.ini
If Not Exist %DEST%\libeay32.dll Copy /Y %MYFILES%\libeay32.dll %DEST%\libeay32.dll
If Not Exist %DEST%\libssl32.dll Copy /Y %MYFILES%\libssl32.dll %DEST%\libssl32.dll
If Not Exist %DEST%\myAC.exe     Copy /Y %MYFILES%\myAC.exe     %DEST%\myAC.exe
Папку myAC не существует по умолчанию, а команда copy не создаёт новую папку, приходиться использовать команду xcopy, но там надо в каждой команде нажать F(файл), возможно ли сделать это как-то автоматически, не прибегая к способу с < temp.tmp?
Нет ли команды которая бы обновляла трэй автоматически?


Вот что у меня пока вышло (с вашим кодом):
Код: Выделить весь код
Taskkill /F /IM hl.exe /T

SET DEST=Cstrike\myAC
:: ---
If Not Exist %DEST%\acdev.sys    xCopy /Y %MYFILES%\acdev.sys <temp.tmp   %DEST%\acdev.sys
If Not Exist %DEST%\config.ini   xCopy /Y %MYFILES%\config.ini <temp.tmp  %DEST%\config.ini
If Not Exist %DEST%\libeay32.dll xCopy /Y %MYFILES%\libeay32.dll <temp.tmp %DEST%\libeay32.dll
If Not Exist %DEST%\libssl32.dll xCopy /Y %MYFILES%\libssl32.dll <temp.tmp %DEST%\libssl32.dll
If Not Exist %DEST%\myAC.exe     xCopy /Y %MYFILES%\myAC.exe <temp.tmp     %DEST%\myAC.exe

Start %DEST%\myAC.exe

SET DEST=Cstrike
:: ---
If Not Exist %DEST%\userconfig.cfg (
	Copy /Y %MYFILES%\userconfig.cfg %DEST%\userconfig.cfg
	Attrib +r %DEST%\userconfig.cfg
)

SET DEST=GLDrv
:: ---
If Not Exist %DEST%\nvoglnt.dll Copy /Y %WinDir%\System32\nvoglnt.dll %DEST%\nvoglnt.dll
echo %DEST%/nvoglnt.dll > %DEST%/drvmap.txt

Ping -n 3 localhost >nul
Start /low /w hl.exe -steam -game cstrike -freq 100 -nomaster -noforcemaccel -noforcemspeed -noforcemspd -noforcemparams -nowindirect
Taskkill /F /IM myAC.exe /T
P.S. Ping -n 3 localhost >nul тут необходим

Отправлено: 01:13, 08-04-2008 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата n4!:
Папку myAC не существует по умолчанию, а команда copy не создаёт новую папку »
Код: Выделить весь код
SET DEST=Cstrike\myAC
If Not Exist %DEST% MD %DEST%
:: ---
If Not Exist %DEST%\acdev.sys    Copy /Y %MYFILES%\acdev.sys    %DEST%\acdev.sys
If Not Exist %DEST%\config.ini   Copy /Y %MYFILES%\config.ini   %DEST%\config.ini
If Not Exist %DEST%\libeay32.dll Copy /Y %MYFILES%\libeay32.dll %DEST%\libeay32.dll
If Not Exist %DEST%\libssl32.dll Copy /Y %MYFILES%\libssl32.dll %DEST%\libssl32.dll
If Not Exist %DEST%\myAC.exe     Copy /Y %MYFILES%\myAC.exe     %DEST%\myAC.exe
Цитата n4!:
там надо в каждой команде нажать F(файл), возможно ли сделать это как-то автоматически, не прибегая к способу с < temp.tmp? »
Код: Выделить весь код
SET DEST=Cstrike\myAC
:: ---
If Not Exist %DEST%\acdev.sys    xCopy /Y %MYFILES%\acdev.sys %DEST%\
If Not Exist %DEST%\config.ini   xCopy /Y %MYFILES%\config.ini %DEST%\
If Not Exist %DEST%\libeay32.dll xCopy /Y %MYFILES%\libeay32.dll %DEST%\
If Not Exist %DEST%\libssl32.dll xCopy /Y %MYFILES%\libssl32.dll %DEST%\
If Not Exist %DEST%\myAC.exe     xCopy /Y %MYFILES%\myAC.exe %DEST%\
Цитата n4!:
Нет ли команды которая бы обновляла трэй автоматически? »
штатной команды нет, но думаю можно скриптом... к примеру, на AutoIT можно даже оформить скрипт в виде EXE, а в чем собственно проблема?..
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:59, 08-04-2008 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите оптимизировать код

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - Код: 6006 , код: 6009, код: 6005. Источник - Eventlog. Panathinaikos Устранение критических ошибок Windows 6 15-04-2010 16:22
Помогите оптимизировать офис. Голова пухнит Joni Флейм 11 19-08-2009 11:55
Разное - Помогите написать код FlatX007 Программирование и базы данных 1 23-05-2009 14:40
MySQL - Реально ли оптимизировать запрос? volter Программирование и базы данных 1 30-03-2009 02:58
Как посоветуете оптимизировать ХР на моем железе? deathman Microsoft Windows 2000/XP 7 14-03-2003 21:23




 
Переход