Как с помощью bat-ника октрыть\закрыть лоток привода?
Собственно, вопрос по сабжу. Пытался найти в интернете, но так и не нашёл, как можно с помощью bat-ника открыть\закрыть лоток DVD-привода.
|
батником без сторонних утилит (типа NirCmd) никак, через VBS:
Код:
WScript.CreateObject("Shell.Application").NameSpace("E:").Self.InvokeVerb("&Извлечь")
|
amel27,
Попробовал - лоток открывается, а как закрыть? Собственно, хотелось бы немного универсальности, чтобы одним скриптом и закрыть и открыть, если конечно такое возможно.
P.S. Нашёл вот такой скрипт, но он почему-то не работает, при запуске выдаёт сообщение об ошибке в символе 1 строки 9:
читать дальше »
Sub CloseODD
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
colCDROMs.Item(Wscript.arguments.Item(1)).Eject
colCDROMs.Item(Wscript.arguments.Item(1)).Eject
EndSub
Sub OpenODD
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
colCDROMs.Item(Wscript.arguments.Item(1)).Eject
EndSub
SelectCase WScript.arguments(0)
Case"open"
OpenODD
Case"close"
CloseODD
EndSelect
Wscript.CreateObject("Wscript.Shell").Run "taskkill /im wscript.exe /f"
|
Цитата:
Цитата Nun-Nun
одним скриптом и закрыть и открыть, если конечно такое возможно »
|
NirCmd может
Цитата:
Цитата Nun-Nun
выдаёт сообщение об ошибке »
|
если убрать "лишнее":
Код:
Set objWMP = CreateObject("WMPlayer.OCX.7")
Set colCDs = objWMP.cdromCollection
colCDs.Item(0).Eject
MsgBox "Press any key to close CD",64,"Open Close Cd Tray"
colCDs.Item(0).Eject
|
Цитата:
Цитата amel27
если убрать "лишнее":
Set objWMP = CreateObject("WMPlayer.OCX.7")
Set colCDs = objWMP.cdromCollection
colCDs.Item(0).Eject
MsgBox "Press any key to close CD",64,"Open Close Cd Tray"
colCDs.Item(0).Eject»
|
Да, так работает - и закрывается и открывается. Единственный мешающий элемент - это висящее на экране после открытия лотка окно с кнопкой "ОК".
|
Цитата:
Цитата Nun-Nun
Единственный мешающий элемент - это висящее на экране после открытия лотка окно с кнопкой "ОК". »
|
суть этого способа в том, что все нечётные вызовы Eject() открывают лоток, чётные - закрывают,
а определить сколько нам вызовов нужно нет возможности:
Код:
вызовов : 1 раз 2 раза
---------------------------------
закрыт : открывает откр/закр
открыт : - закрывает
всё-таки самое надёжное - через сторонние утилиты:
|
amel27,
Начал дальше пробовать вариант с VBS-скриптом, но наткнулся ещё на одни грабли: если использую VBS-скрипт в составе батника перед командой SET /p yesno="Записать диск? (Y/N)", то после отработки VBS (т.е. открытия/закрытия лотка) батник зависает и оставшаяся его часть не выполняется. Пытался тасккилом убить wscript.exe-процесс - не помогло. Снимаю его через диспетчер задач (почему-то иногда снимается, иногда нет) - тогда оставшаяся часть батника работает. Видимо действительно с VBS-ом дело не пойдёт и без сторонней утилиты никак.
|
Цитата:
Цитата Nun-Nun
использую VBS-скрипт в составе батника »
|
это как?.. может запускать VBS через START?
Код:
Start "" wscript "cdrom.vbs"
|
%windir%\System32\wscript.exe %PathVBS%\OpenCloseDVD.VBS
Цитата:
Цитата amel27
может запускать VBS через START? »
|
ОК, попробую.
|
С командой START всё прошло без глюков. Ещё раз спасибо! Тему можно закрывать.
P.S. Попробовал NirCMD: впечатления только положительные. Говоря словами Ослика из известного мультика: "...И входит, и выходит..." :)
|
Время: 20:17.
© OSzone.net 2001-