Войти

Показать полную графическую версию : [решено] Поясните батник, суть его работы.


Pozia
06-11-2009, 21:00
Вот собственно батник:
CLS
@ECHO OFF
TITLE Drivers-from-CD Installation
color 1F

:: Set Current Drive as CD
CD /D "%~dp0"
:: Set Drivers Location Folder
SET DRV=Drivers
:: Ticker script
ECHO.exec hide %CD%\Process.exe -r setup.exe >%SystemDrive%\Ticker.ncl
ECHO.wait 10000 >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %CD%\Process.exe -p SetupCopyOEMInf.exe high >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %CD%\Process.exe -s setup.exe >>%SystemDrive%\Ticker.ncl
ECHO.wait 50000 >>%SystemDrive%\Ticker.ncl
ECHO.script %SystemDrive%\Ticker.ncl >>%SystemDrive%\Ticker.ncl
:: Pre-Install (Suspend Setup, and Set Setup to Low Priority)
.\Process.exe -s setup.exe
.\Process.exe -p setup.exe low
:: Allow for Unsigned Drivers
START .\WatchDriverSigningPolicy.exe
:: If Compressed Drivers Exist, Unzip Them & Change Drivers Location Folder to Hard Drive
IF EXIST Drivers.7z (
SET DRV=%SystemDrive%\WINDOWS\DriversPozia
.\7z.exe x -y -aoa -o"%SystemDrive%\WINDOWS\DriversPozia" ".\Drivers.7z"
)
:: Run NirCmd Ticker Script (code above)
START .\NirCmd.exe script %SystemDrive%\Ticker.ncl
:: Install Drivers
.\SetupCopyOEMInf.exe "%DRV%"
:: Post-Install (Close NirCmd, Setup Priority back to Normal, Resume Setup)
.\Process.exe -k NirCmd.exe
.\Process.exe -p setup.exe normal
.\Process.exe -r setup.exe
:: Delete Ticker File
DEL %SystemDrive%\Ticker.ncl
EXIT

Этот батник используется для установки драйверов на т39 минуте. Как и что написано здесь (http://www.oszone.net/2780).
Данный батник запускается через WINNT.SIF и пока он не отработает установка винды не продолжается. За счет чего этот эфект достигается??? Что тормозит процеес установки винды а затем запускает эту установку?

amel27
07-11-2009, 03:59
Что тормозит процеес установки винды а затем запускает эту установку? »

:: Pre-Install (Suspend Setup, and Set Setup to Low Priority)
.\Process.exe -s setup.exe
.\Process.exe -p setup.exe low

:: ....

:: Post-Install (Close NirCmd, Setup Priority back to Normal, Resume Setup)
.\Process.exe -p setup.exe normal
.\Process.exe -r setup.exe

кроме того, в фоне крутится NirCmd-скрипт (Ticker.Ncl), который включает Setup.Exe на 10 сек и отключает на 50 сек., линк на утилиту: Command Line Process Viewer/Killer/Suspender for Windows NT/2000/XP (http://www.beyondlogic.org/solutions/processutil/processutil.htm)

З.Ы. А нельзя сразу дать ссылку на оригинал MSFN? Drivers from CD: Simple Method (http://www.msfn.org/board/drivers-cd-simple-method-t51406.html)

Pozia
07-11-2009, 10:38
amel27, Данного автоит скрипта:

#NoTrayIcon
#include <GUIConstants.au3>

$iWidth = 420
$iHeight = 200

$hGUI = GUICreate("DriversNEW", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна

GUICtrlCreateLabel("Хотите установить обновленный пакет драйверов DriversNEW?", 10, 20)
GUICtrlCreateLabel("Помните!", 170, 50)
GUICtrlCreateLabel("При установке DriversNEW набор стандартных драйверов Windows", 10, 80)
GUICtrlCreateLabel("будет использоваться в последнюю очередь.", 10, 95)
GUICtrlCreateLabel("Если после установки DriversNEW у Вас будут проблемы в работе Windows", 10, 115)
GUICtrlCreateLabel("переустановите систему без использования DriversNEW.", 10, 130)

$Yes_Button = GUICtrlCreateButton(" Да ", 35, 160)
$No_Button = GUICtrlCreateButton(" Нет ", 220, 160)

GUISetState(@SW_SHOW, $hGUI)

RunWait("hidcon.exe Process.exe -s setup.exe")
RunWait("hidcon.exe Process.exe -p setup.exe low")

While 1
Switch GUIGetMsg()
Case $No_Button, $GUI_EVENT_CLOSE
RunWait("hidcon.exe Process.exe -p setup.exe normal")
RunWait("hidcon.exe Process.exe -p setup.exe normal")
Exit
Case $Yes_Button
GUIDelete($hGUI) ;Удаление окна
RunWait("hidcon.exe Drivers.cmd")
RunWait("hidcon.exe Process.exe -p setup.exe normal")
RunWait("hidcon.exe Process.exe -p setup.exe normal")
Exit
EndSwitch
WEnd


Мне достаточно чтобы остановить установку и установив дрова продолжить установку виндовс?

кроме того, в фоне крутится NirCmd-скрипт (Ticker.Ncl), который включает Setup.Exe на 10 сек и отключает на 50 сек., линк на утилиту: »

мне это нужно как то в автоит скрипте реализовать? Если да то как?

З.Ы. А нельзя сразу дать ссылку на оригинал MSFN? »
Если я не знаю ориинальной ссылки так как не лажу по англоязычным сайтам то как я могу дать Вам эту ссылку :)

amel27
07-11-2009, 13:45
мне это нужно как то в автоит скрипте реализовать? »
смысл?.. не проще запустить весь батник из скрипта?

Если я не знаю ориинальной ссылки так как не лажу по англоязычным сайтам то как я могу дать Вам эту ссылку »
вопрос был риторический : )

Pozia
07-11-2009, 23:15
смысл?.. не проще запустить весь батник из скрипта? »
так я и делал, но маленькая загвоздка. Если не нажать сразу же Да как появляется окно вопроса, то установка винды продолжится. Вот я и хотел узнать как установку винды тормознуть при запуске скрипта.
amel27, а Вы могли бы весь этот батник переписать в автоит?? (простите за наглость :) ). Знаю не по наслышке Вы гений в этих скриптах :)

amel27
08-11-2009, 05:14
Если не нажать сразу же Да как появляется окно вопроса, то установка винды продолжится. Вот я и хотел узнать как установку винды тормознуть при запуске скрипта. »в таком случае варианов два:

1. При входе в скрипт тормознуть SETUP через process.exe, непосредственно перед запуском батника вернуть всё обратно... впрочем, приоритет лучше оставить низким, ограничиться только командой "resume". Плюс - не нужно редактировать батник.

2. Полностью перенести из батника в AU3-скрипт две отмеченные выше пары команд с Process.Exe - останавливать при входе в скрипт и восстанавливать при выходе.

могли бы весь этот батник переписать в автоит?? »уже сказал - не вижу смысла... тем паче использование AutoIT на T39 - рискованное мероприятие, т.к. к этому времени инициализированы еще не все компоненты ОС

Знаю не по наслышке Вы гений в этих скриптах »
-10 ...с таким подходом рискуете остаться без ответов

Pozia
08-11-2009, 10:58
При входе в скрипт тормознуть SETUP через process.exe, непосредственно перед запуском батника вернуть всё обратно... »
я тонкостей конечно не знаю, но если следовать логике, то не успеет ли винда проскочить этап т39 пока я буду тормозить, восстанавливать установку через Автоит скрипт, и затем снова тормозить через батник? Ведь между выполнением команд есть некоторые промежутки времени. Или это глупости я думаю?
впрочем, приоритет лучше оставить низким, ограничиться только командой "resume" »
вот это не понял, можно подробнее?

amel27
08-11-2009, 13:48
если следовать логике, то не успеет ли винда проскочить этап т39 пока я буду тормозить, восстанавливать установку через Автоит скрипт, и затем снова тормозить через батник? Ведь между выполнением команд есть некоторые промежутки времени »если следовать такой логике, то и батник не должен работать, так как он выполняет именно это: периодически включает и отключает SETUP, а при полном его отключении драйверы просто не установятся (инфа из темы на MSFN)... так что приходится идти на компромисс - а для того, чтобы SETUP не "проскочил" ему ставят минимальный приоритет выполнения

можно подробнее? »
"Process.exe -p setup.exe low" - установить низкий приоритет (при входе в скрипт)
"Process.exe -s setup.exe" - остановить процесс установки (на время обработки GUI)
"Process.exe -r setup.exe" - включить процесс установки (перед запуском батника)
"Process.exe -p setup.exe normal" - восстановить нормальный приоритет (при выходе из скрипта)

Pozia
08-11-2009, 16:18
amel27, если я Вас правильно понял батник я не трогая а скрипт автоит должен быть такой:

#NoTrayIcon
#include <GUIConstants.au3>

$iWidth = 420
$iHeight = 200

$hGUI = GUICreate("DriversNEW", $iWidth, $iHeight)
GUISetBkColor(0xBEBEBE) ;цвет окна

GUICtrlCreateLabel("Хотите установить обновленный пакет драйверов DriversNEW?", 10, 20)
GUICtrlCreateLabel("Помните!", 170, 50)
GUICtrlCreateLabel("При установке DriversNEW набор стандартных драйверов Windows", 10, 80)
GUICtrlCreateLabel("будет использоваться в последнюю очередь.", 10, 95)
GUICtrlCreateLabel("Если после установки DriversNEW у Вас будут проблемы в работе Windows", 10, 115)
GUICtrlCreateLabel("переустановите систему без использования DriversNEW.", 10, 130)

$Yes_Button = GUICtrlCreateButton(" Да ", 35, 160)
$No_Button = GUICtrlCreateButton(" Нет ", 220, 160)

GUISetState(@SW_SHOW, $hGUI)

RunWait("hidcon.exe Process.exe -s setup.exe")
RunWait("hidcon.exe Process.exe -p setup.exe low")

While 1
Switch GUIGetMsg()
Case $No_Button, $GUI_EVENT_CLOSE
RunWait("hidcon.exe Process.exe -p setup.exe normal")
RunWait("hidcon.exe Process.exe -r setup.exe")
Exit
Case $Yes_Button
GUIDelete($hGUI) ;Удаление окна
RunWait("hidcon.exe Process.exe -r setup.exe")
RunWait("hidcon.exe Drivers.cmd")
Exit
EndSwitch
WEnd

Все верно?

amel27
08-11-2009, 16:52
если я Вас правильно понял батник я не трогая а скрипт автоит должен быть такой »последовательность команд - да, что касается самого скрипта сходу не скажу... кроме того в данной категории/ветке это оффтоп... не понял только, зачем батник вызывать через RunWait ?.. скрипт должен дождаться окончания его работы?

Pozia
08-11-2009, 17:47
скрипт должен дождаться окончания его работы? »
да нет. Просто не обратил на это внимания. Я уже протестировал. Все работает нормально. Спасибо за помощь




© OSzone.net 2001-2012