2013-01-08 8 views
1

CD 드라이브를 식별하고 트레이를 꺼내야합니다. 이것은 WinPE에서 부팅되는 동안 실행되므로 WMP 꺼내기 기능을 사용할 수 없습니다. 이 스크립트는 다양한 컴퓨터 모델/구성에서 사용됩니다. 현재 다음을 사용하고 있습니다 :외부 파일없이 WinPE에서 CD 드라이브를 식별하고 bat 또는 vbs를 사용하여 꺼내십시오.

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

작동하지만 때로는 오류가 발생하여 사용자가 조작해야합니다. 나는 그것이 하드 코드 된 D:\ 드라이브 문자 때문이라고 생각하지만 완전히 틀릴 수 있습니다. 제 3 자 유틸리티없이이 작업이 필요합니다.

답변

3

사용 Drive 개체의 DriveType 특성 :

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 
+0

이것은 시도한 것과 매우 유사하며 스크립트가 내 것과 동일한 오류를 발생시킵니다. Line 3 Char 9, Object Required – fix

+0

hrmm, d.DriveLetter 뒤에 ": \"를 추가 할 수 있습니다. – safetyOtter

+0

그래, 그 오류는 제거되었지만 지금은 스크립트가 전혀 아무것도하지 않습니다. 'CreateObject ("Scripting.FileSystemObject")의 각 d에 대해 dDriveType = 4 인 경우 드라이브, drv = d.DriveLetter 및 ": \"CreateObject ("Shell.Application") 네임 스페이스 (17) .ParseName (drv) .InvokeVerb ("Eject") end if next ' – fix

1

다음은 미디어 플레이어를 사용하여 꺼내는 코드입니다. 나는 당신을 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 

플랜 B는 "eject.exe"의 사본을 다운로드하는 것입니다, 당신을 WinPE 미디어에 포함됩니다

+0

위와 같이 WMPlayer 또는 타사 파일을 사용할 수 없습니다. 그래도 고마워. – fix