Войти

Показать полную графическую версию : [решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD?


Pozia
27-02-2009, 12:28
Вы знаете что, чтобы назначить букву DVD приваду можно запустить такое из CMD:

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
set DVD=%CDROM%
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY%\910 /V 1 /D "REGEDIT /S %DVD%\$OEM$\HKLM.reg" /f
REG ADD %KEY%\920 /V 1 /D "hidcon.exe Shutdown -r -f -t 0" /f
REG ADD %KEY%\999 /V 1 /D "%DVD%\WPI\WPI.hta" /f
exit

Все бы хорошо да только при наличии кард рийдера в компе этот способ не годится для автоустановки винды, так как выскакивают сообщения (количество их равное количеству мест под флешку в кард рийдере) с какими то кракобяками и кнопками Да Нет Продолжить. После нескольких нажатий продолжить все же этот метод срабатывает. Как прочел где то здесь на форуме это происходит из за того что в кард рийдере нет флешек.

Вот собственно вопрос - можно ли этот способ присвоения буквы DVD приводу записать в Автоит без описанного недостатка? Помогите как. Сам не силен. Спасибо.

amel27
02-03-2009, 13:04
$sKey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx"
$aDrives = DriveGetDrive("CDROM")

For $i=1 To $aDrives[0]
If FileExists($aDrives[$i] &"\WIN51") Then $sDVD = $aDrives[$i]
Next

RegWrite($sKey &"\910", "1", "REG_SZ","REGEDIT /S "& $sDVD &"\$OEM$\HKLM.reg")
RegWrite($sKey &"\920", "1", "REG_SZ", "hidcon.exe Shutdown -r -f -t 0")
RegWrite($sKey &"\999", "1", "REG_SZ", $sDVD &"\WPI\WPI.hta")

Pozia
02-03-2009, 18:23
amel27, вы как всегда маг и волшебник. Щелкаете проблемы мои как орешки. С кардрийдером проблема ушла, молчит. Появилась теперь другая проблема. Если в DVD приводе диска нет или находится другой без путей которые хочет добавить скрипт (%DVD%\$OEM$\HKLM.reg и %DVD%\WPI\WPI.hta) то выскакивает ошибка с надписью:

Line 8 (File путь к скрипту... )

RegWrite($sKey &"\910", "1", "REG_SZ","REGEDIT /S "& $sDVD &"\$OEM$\HKLM.reg")
RegWrite($sKey &"\999", "1", "REG_SZ", $sDVD &"\WPI\WPI.hta")

Error: Variabl used without being declared.

И кнопка OK.

И в реестр ничего вообще не добовляется. Можно ли как нибудь сделать чтобы производилась проверка наличия нужного диска с правильными путями к файлам и при его отсутствии выскакивало сообщение о необходимости вставить диск и кнопка OK для подтверждения???

Pozia
02-03-2009, 23:04
amel27, а как правильно записать в скрипт вот это:

REG ADD %KEY%\920 /VE /D "Перезагрузка..." /f

?

amel27
03-03-2009, 12:35
Можно ли как нибудь сделать чтобы производилась проверка наличия нужного диска с правильными путями к файлам и при его отсутствии выскакивало сообщение о необходимости вставить диск и кнопка OK для подтверждения??? »
$sKey = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx"
$sTag = "WIN51"
$sDVD = ""

$aDrives = DriveGetDrive("CDROM")

While 1
For $i=1 To $aDrives[0]
If FileExists($aDrives[$i] &"\"& $sTag) Then $sDVD = $aDrives[$i]
Next
If StringLen($sDVD)>0 Then ExitLoop
MsgBox(48, "Прерывание", 'Вставьте диск с дистрибутивом и нажмите "OK" для продолжения установки.')
WEnd

RegWrite($sKey &"\910", "1", "REG_SZ","REGEDIT /S "& $sDVD &"\$OEM$\HKLM.reg")
RegWrite($sKey &"\920", "1", "REG_SZ", "hidcon.exe Shutdown -r -f -t 0")
RegWrite($sKey &"\999", "1", "REG_SZ", $sDVD &"\WPI\WPI.hta")

RegWrite($sKey &"\920", "" , "REG_SZ", "Перезагрузка...")

как правильно записать в скрипт вот это »
последняя строчка примера

Pozia
03-03-2009, 18:42
amel27, спасибо огромное!!! Я уже подумывал кардрийдер выбрасывать и покувать внешний съемный. Спасли!!!

R.M.L
15-04-2009, 10:35
спасибо ребята,сегодня мой день,прям в точки попадаю )) думал создать такую тему но оказывается я не один.Незнаю,но я полюбил этот сайт

FreshMen85
13-01-2010, 19:30
добрые люди, подправте скриптик так чтобы можно было запускать файл из текущей сессии, а не после перезагрузки. Мне надо запустить файл после полной загрузки OS, ну вот такой вот я превереда, уж извените, если что.

Pozia
14-01-2010, 18:08
FreshMen85,
#NOtrayIcon
#include <GuiConstantsEx.au3>
#include <ComboConstants.au3>
;
$sBSPI_Drives = ""
$sSel_Drive = ""
$sFirst_Drive = ""
$aDrives = DriveGetDrive("All")

;=============================================================================
For $i = 1 To $aDrives[0]
If DriveStatus($aDrives[$i]) <> "READY" Then ContinueLoop

If FileExists($aDrives[$i] & "\BSPI\Presetup.exe") Then
If $sBSPI_Drives = "" Then $sFirst_Drive = $aDrives[$i]
$sBSPI_Drives &= StringUpper($aDrives[$i]) & "|"
EndIf
Next

$sBSPI_Drives = StringRegExpReplace($sBSPI_Drives, "\|+$", "")

If StringInStr($sBSPI_Drives, "|") Then
$hGUI = GUICreate("Выберите диск запуска BSPI", 240, 50)

$Drives_Combo = GUICtrlCreateCombo("", 20, 20, 40, 20, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, $sBSPI_Drives, $sFirst_Drive)

$OK_Button = GUICtrlCreateButton("OK", 80, 19, 60, 25)
$Cancel_Button = GUICtrlCreateButton("Cancel", 160, 19, 60, 25)

GUISetState(@SW_SHOW, $hGUI)

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Cancel_Button
Exit
Case $OK_Button
$sSel_Drive = GUICtrlRead($Drives_Combo)

ExitLoop
EndSwitch
WEnd
ElseIf $sBSPI_Drives <> "" Then
$sSel_Drive = $sBSPI_Drives
EndIf

If $sSel_Drive <> "" Then RunWait($sSel_Drive & "\BSPI\Presetup.exe")
;=============================================================================

FreshMen85
14-01-2010, 19:15
Pozia, спасибо конечно, но мне немного труднова-то разобратся в твоём скрипте. Он сильно большой и я не могу проследить что за что отвечает. Может если тебе это не сильно трудно, сделаеш скрипт на такой вот путь: %CDROM%\AutoInstall\Install_Soft.bat

P.S. Вчера запускал скрипт от amel27, всё было нормально, сегодня востановил старую винду акронисом, скрипт не работаеат, пишет про ошибку в первой строчке. Вобщем мозги скоро начнут плавится, а загадок меньше не становится. Да кстати ещё на одной востановленной версии винды команда:
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
, отработала нормально, вот так вот...

Pozia
14-01-2010, 21:26
FreshMen85, поменяйте две выделенные строки в мною приведенном скрипте на:
\AutoInstall\Install_Soft.bat »

Отличие приведенного скрипта (автор тоже amel27) в том, что если будет два или несколько искаемых путя то будет предложен выбор с какого диска запускать

FreshMen85
15-01-2010, 09:13
очередные испытания в полевых условиях пока не проводил, только в лабораторных, скрипт отработал как надо. Спасибо amel27 за скрипт и Pozia за информацию. Кстати Pozia, а ты случайно не пользовался тем что предлогал Amigo (напомню про аддон FakeSetupAdv_9.11.24.2.7z).

Pozia
15-01-2010, 09:39
Данными возможностями фак не пользовался.

FreshMen85
15-01-2010, 18:07
Вобщем в полевых условиях я потестил и у меня конечно ни чего не получилось, ну файл конечно запустил, но потом ни одна команда на установку ПО не срабатала. В принципе оно и понятно, ведь я там использую переменную "%CDROM%", но поскольку данная переменная не была назначена на соответсвующую букву диска в скрипте, поэтому и выскочили ошибки о ненахождении файла. Я понимаю что могу взять переменную из скрипта, но как бы это выглядило для батника, Pozia, помоги тут мне ещё раз.

Pozia
15-01-2010, 19:01
Я понимаю что могу взять переменную из скрипта »
не можете, и я не помогу... У вас два пути:
1 - прописать все ваши команды прямо в скрипт (как? найдите все мои темы в этой ветки, там есть примеры, да и всю ветку гляньте)
2 - запустить стороннюю программу типа WPI (http://forum.oszone.net/thread-46483.html) или Boa Software Post Installer (http://forum.oszone.net/thread-51853.html), они и сделают нужные Вам вещи. Рекомендую вторую




© OSzone.net 2001-2012