Войти

Показать полную графическую версию : [решено] Как с помощью bat-ника октрыть\закрыть лоток привода?


Nun-Nun
15-06-2011, 04:53
Собственно, вопрос по сабжу. Пытался найти в интернете, но так и не нашёл, как можно с помощью bat-ника открыть\закрыть лоток DVD-привода.

amel27
15-06-2011, 05:06
батником без сторонних утилит (типа NirCmd (http://soft.oszone.net/program/7092/NirCmd/)) никак, через VBS:WScript.CreateObject("Shell.Application").NameSpace("E:").Self.InvokeVerb("&Извлечь")

Nun-Nun
15-06-2011, 05:12
amel27,

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

P.S. Нашёл вот такой скрипт (http://berghowto.info/django-blog/2011/05/06/upravlenie-cddvd-privodom-s-pomoshyu-windows-scripting-host/), но он почему-то не работает, при запуске выдаёт сообщение об ошибке в символе 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"

amel27
15-06-2011, 06:00
одним скриптом и закрыть и открыть, если конечно такое возможно »NirCmd может
выдаёт сообщение об ошибке »если убрать "лишнее":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
15-06-2011, 06:13
если убрать "лишнее":
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
15-06-2011, 07:43
Единственный мешающий элемент - это висящее на экране после открытия лотка окно с кнопкой "ОК". »суть этого способа в том, что все нечётные вызовы Eject() открывают лоток, чётные - закрывают,
а определить сколько нам вызовов нужно нет возможности:вызовов : 1 раз 2 раза
---------------------------------
закрыт : открывает откр/закр
открыт : - закрываетвсё-таки самое надёжное - через сторонние утилиты:nircmd cdrom opennircmd cdrom close

Nun-Nun
15-06-2011, 15:24
amel27,

Начал дальше пробовать вариант с VBS-скриптом, но наткнулся ещё на одни грабли: если использую VBS-скрипт в составе батника перед командой SET /p yesno="Записать диск? (Y/N)", то после отработки VBS (т.е. открытия/закрытия лотка) батник зависает и оставшаяся его часть не выполняется. Пытался тасккилом убить wscript.exe-процесс - не помогло. Снимаю его через диспетчер задач (почему-то иногда снимается, иногда нет) - тогда оставшаяся часть батника работает. Видимо действительно с VBS-ом дело не пойдёт и без сторонней утилиты никак.

amel27
15-06-2011, 15:30
использую VBS-скрипт в составе батника »это как?.. может запускать VBS через START?Start "" wscript "cdrom.vbs"

Nun-Nun
15-06-2011, 15:58
это как?.. »
%windir%\System32\wscript.exe %PathVBS%\OpenCloseDVD.VBS
может запускать VBS через START? »
ОК, попробую.

Nun-Nun
15-06-2011, 21:56
С командой START всё прошло без глюков. Ещё раз спасибо! Тему можно закрывать.

P.S. Попробовал NirCMD: впечатления только положительные. Говоря словами Ослика из известного мультика: "...И входит, и выходит..." :)




© OSzone.net 2001-2012