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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD?

Ответить
Настройки темы
[решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD?

Аватара для Pozia

Ветеран


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

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


Вы знаете что, чтобы назначить букву 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 приводу записать в Автоит без описанного недостатка? Помогите как. Сам не силен. Спасибо.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:28, 27-02-2009

 

Googler


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

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


Код: Выделить весь код
$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")
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:04, 02-03-2009 | #2



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

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


Аватара для Pozia

Ветеран


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

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


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 для подтверждения???

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:23, 02-03-2009 | #3


Аватара для Pozia

Ветеран


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

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


amel27, а как правильно записать в скрипт вот это:

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

?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 23:04, 02-03-2009 | #4


Googler


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

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


Цитата Pozia:
Можно ли как нибудь сделать чтобы производилась проверка наличия нужного диска с правильными путями к файлам и при его отсутствии выскакивало сообщение о необходимости вставить диск и кнопка 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:
как правильно записать в скрипт вот это »
последняя строчка примера
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:35, 03-03-2009 | #5


Аватара для Pozia

Ветеран


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

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


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

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 18:42, 03-03-2009 | #6


Пользователь


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

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


спасибо ребята,сегодня мой день,прям в точки попадаю )) думал создать такую тему но оказывается я не один.Незнаю,но я полюбил этот сайт

-------
If Begin then End; else End.


Отправлено: 10:35, 15-04-2009 | #7


Старожил


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

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


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

Отправлено: 19:30, 13-01-2010 | #8


Аватара для Pozia

Ветеран


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

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


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")
;=============================================================================

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Последний раз редактировалось Pozia, 14-01-2010 в 21:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:08, 14-01-2010 | #9


Старожил


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

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


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:
, отработала нормально, вот так вот...

Отправлено: 19:15, 14-01-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как назначить букву DVD приводу с помощью Автоит подобно как CMD?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] как принудительно назначить подключаемой флешке определенную букву Udaff_es Microsoft Windows 2000/XP 7 03-05-2011 18:19
Установка - [решено] Не могу назначить букву раздела. JOSEF Microsoft Windows 7 2 22-12-2009 15:48
[решено] Буфер обмена с помощью Автоит Str_ani_ck AutoIt 15 07-08-2009 03:12
[решено] Как с помощью CMD(BAT) запустить запароленный sfx архив! ofcoss Автоматическая установка приложений 7 10-07-2009 00:41
Как назначить CD-ROM фиксированную букву Retvizan Автоматическая установка Windows 2000/XP/2003 14 15-11-2008 07:27




 
Переход