Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поясните батник, суть его работы. (http://forum.oszone.net/showthread.php?t=156037)

Pozia 06-11-2009 21:00 1263462

Поясните батник, суть его работы.
 
Вот собственно батник:
Код:

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 минуте. Как и что написано здесь.
Данный батник запускается через WINNT.SIF и пока он не отработает установка винды не продолжается. За счет чего этот эфект достигается??? Что тормозит процеес установки винды а затем запускает эту установку?

amel27 07-11-2009 03:59 1263700

Цитата:

Цитата Pozia
Что тормозит процеес установки винды а затем запускает эту установку? »

Код:

::  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

З.Ы. А нельзя сразу дать ссылку на оригинал MSFN? Drivers from CD: Simple Method

Pozia 07-11-2009 10:38 1263781

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

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

Цитата:

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

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

Цитата:

Цитата amel27
З.Ы. А нельзя сразу дать ссылку на оригинал MSFN? »

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

amel27 07-11-2009 13:45 1263877

Цитата:

Цитата Pozia
мне это нужно как то в автоит скрипте реализовать? »

смысл?.. не проще запустить весь батник из скрипта?

Цитата:

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

вопрос был риторический :)

Pozia 07-11-2009 23:15 1264258

Цитата:

Цитата amel27
смысл?.. не проще запустить весь батник из скрипта? »

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

amel27 08-11-2009 05:14 1264409

Цитата:

Цитата Pozia
Если не нажать сразу же Да как появляется окно вопроса, то установка винды продолжится. Вот я и хотел узнать как установку винды тормознуть при запуске скрипта. »

в таком случае варианов два:

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

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

Цитата:

Цитата Pozia
могли бы весь этот батник переписать в автоит?? »

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

Цитата:

Цитата Pozia
Знаю не по наслышке Вы гений в этих скриптах »

-10 ...с таким подходом рискуете остаться без ответов

Pozia 08-11-2009 10:58 1264487

Цитата:

Цитата amel27
При входе в скрипт тормознуть SETUP через process.exe, непосредственно перед запуском батника вернуть всё обратно... »

я тонкостей конечно не знаю, но если следовать логике, то не успеет ли винда проскочить этап т39 пока я буду тормозить, восстанавливать установку через Автоит скрипт, и затем снова тормозить через батник? Ведь между выполнением команд есть некоторые промежутки времени. Или это глупости я думаю?
Цитата:

Цитата amel27
впрочем, приоритет лучше оставить низким, ограничиться только командой "resume" »

вот это не понял, можно подробнее?

amel27 08-11-2009 13:48 1264602

Цитата:

Цитата Pozia
если следовать логике, то не успеет ли винда проскочить этап т39 пока я буду тормозить, восстанавливать установку через Автоит скрипт, и затем снова тормозить через батник? Ведь между выполнением команд есть некоторые промежутки времени »

если следовать такой логике, то и батник не должен работать, так как он выполняет именно это: периодически включает и отключает SETUP, а при полном его отключении драйверы просто не установятся (инфа из темы на MSFN)... так что приходится идти на компромисс - а для того, чтобы SETUP не "проскочил" ему ставят минимальный приоритет выполнения

Цитата:

Цитата Pozia
можно подробнее? »

"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 1264822

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 1264870

Цитата:

Цитата Pozia
если я Вас правильно понял батник я не трогая а скрипт автоит должен быть такой »

последовательность команд - да, что касается самого скрипта сходу не скажу... кроме того в данной категории/ветке это оффтоп... не понял только, зачем батник вызывать через RunWait ?.. скрипт должен дождаться окончания его работы?

Pozia 08-11-2009 17:47 1264920

Цитата:

Цитата amel27
скрипт должен дождаться окончания его работы? »

да нет. Просто не обратил на это внимания. Я уже протестировал. Все работает нормально. Спасибо за помощь


Время: 13:58.

Время: 13:58.
© OSzone.net 2001-