Определить CD-привод и извлечь с помощью bat или vbs в WinPE без внешних файлов

Мне нужно идентифицировать дисковод компакт-дисков и извлечь лоток. Это выполняется при загрузке в WinPE, поэтому функция извлечения WMP недоступна. Этот скрипт будет использоваться на различных моделях компьютеров / конфигурациях. Я в настоящее время использую это:

For Each d in CreateObject("Scripting.FileSystemObject").Drives
    CreateObject("Shell.Application").Namespace(17).ParseName("D:\").InvokeVerb("Eject")
Next

Это работает, но иногда это ошибки и требует взаимодействия с пользователем, прежде чем он извлекается. Я подозреваю, что это из-за жестко закодированных D:\ буква диска, но я могу быть совершенно не прав. Мне нужно, чтобы это работало без сторонних утилит.

2 ответа

Решение

Использовать DriveType собственность Drive объект:

For Each d in CreateObject("Scripting.FileSystemObject").Drives
    WScript.sleep 60
    If d.DriveType = 4 Then
        CreateObject("Shell.Application").Namespace(17).ParseName(d.DriveLetter & ":\").InvokeVerb("Eject")
    End If
Next

Вот код, который использует Media Player для извлечения; Я не уверен, насколько легко было бы вызвать из вашей среды WinPE:

' http://www.msfn.org/board/topic/45418-vbscript-for-openingclosing-cd/ 
' http://waxy.org/2003/03/open_cdrom_driv/
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
     For d = 0 to colCDROMs.Count - 1
           colCDROMs.Item(d).Eject 
Next 'null

План Б будет состоять в том, чтобы загрузить копию файла "eject.exe" и включить ее на свой носитель WinPE:

Другие вопросы по тегам