Vbscript 在没有外部文件的WinPE中识别CD驱动器并使用bat或vbs弹出

Vbscript 在没有外部文件的WinPE中识别CD驱动器并使用bat或vbs弹出,vbscript,drive,winpe,cd-rom,Vbscript,Drive,Winpe,Cd Rom,我需要识别CD驱动器并弹出托盘。这是在WinPE中启动时执行的,因此WMP弹出功能不可用。此脚本将用于各种计算机型号/配置。我目前正在使用这个: For Each d in CreateObject("Scripting.FileSystemObject").Drives CreateObject("Shell.Application").Namespace(17).ParseName("D:\").InvokeVerb("Eject") Next 它可以工作,但有时会出错,需要用户交

我需要识别CD驱动器并弹出托盘。这是在WinPE中启动时执行的,因此WMP弹出功能不可用。此脚本将用于各种计算机型号/配置。我目前正在使用这个:

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

它可以工作,但有时会出错,需要用户交互才能弹出。我怀疑这是因为硬编码的
D:\
驱动器号,但我可能完全错了。我需要它在没有第三方实用程序的情况下工作。

以下是使用媒体播放器弹出的代码;我不确定从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介质中:


    • 以下是使用媒体播放器弹出的代码;我不确定从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介质中:

      使用对象的属性:

      使用对象的属性:


      我不能使用上述WMPlayer或第三方文件。不过,谢谢。我不能使用上述WMPlayer或第三方文件。不过,谢谢。这与我一直尝试的非常相似,你的脚本得到的错误与我的相同。第3行Char 9,Object Requiredhrmm,可能在d.drivelette之后添加&“:\”是的,这消除了错误,但现在脚本根本不做任何事情。”对于CreateObject(“Scripting.FileSystemObject”).Drives中的每个d,如果d.DriveType=4,那么drv=d.DriveLetter&“:\”CreateObject(“Shell.Application”).Namespace(17).ParseName(drv).InvokeVerb(“Eject”)结束,如果next'好了,几个小时后,我通过在For循环中添加一个“WScript.sleep 60”使其工作。这使得它在每次迭代期间暂停60毫秒。也许是因为我在WinPE中,它的迭代速度太快了?没有线索,但它起作用了。谢谢你的帮助。我很高兴你能让它工作。希望你的项目能顺利进行。这和我一直在尝试的非常相似,你的脚本和我的脚本出现了同样的错误。第3行Char 9,Object Requiredhrmm,可能在d.drivelette之后添加&“:\”是的,这消除了错误,但现在脚本根本不做任何事情。”对于CreateObject(“Scripting.FileSystemObject”).Drives中的每个d,如果d.DriveType=4,那么drv=d.DriveLetter&“:\”CreateObject(“Shell.Application”).Namespace(17).ParseName(drv).InvokeVerb(“Eject”)结束,如果next'好了,几个小时后,我通过在For循环中添加一个“WScript.sleep 60”使其工作。这使得它在每次迭代期间暂停60毫秒。也许是因为我在WinPE中,它的迭代速度太快了?没有线索,但它起作用了。谢谢你的帮助。我很高兴你能让它工作。希望项目的其他部分进展顺利。