Определить 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: