Abrir/cerrar el lector de CD con un bat

Resuelto
freeze -  
 LIAMSI3456 -
Hola,
¿cuál es la instrucción que permite abrir/cerrar el lector de CD en un archivo batch BAT o en otro lenguaje soportado por Windows (ya que no tengo ningún compilador)?
gracias
Configuración: Windows XP Internet Explorer 6.0

24 respuestas

  • 1
  • 2
  1. thib0787 Mensajes publicados 934 Estado Miembro 176
     
    Hola, encontré algo,

    puedes lanzar un .vbs desde tu bat para abrir la unidad (no para cerrarla)

    aquí está el vbs

    Set oWMP = CreateObject("WMPlayer.OCX.7" )
    Set colCDROMs = oWMP.cdromCollection
    if colCDROMs.Count >= 1 then
    For i = 0 to colCDROMs.Count - 1
    colCDROMs.Item(i).Eject
    Next ' cdrom
    End If
    11
    1. Selim
       
      Gracias
      0
  2. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    Hola para abrir y luego cerrar su lector, pero si ya está abierto, lo cierra...
    encontré este tutorial de vbs

    Set oWMP = CreateObject("WMPlayer.OCX.7" )
    Set colCDROMs = oWMP.cdromCollection
    if colCDROMs.Count >= 1 then
    For i = 0 to colCDROMs.Count - 1
    colCDROMs.Item(i).Eject
    Next ' cdrom
    colCDROMs.Item(d).Eject
    End If
    msgbox "hamza su cd rom está cerrado"

    y en cmd encontré esto si

    echo off && Cls && Mode 55,5 && Color 4f && Title Abrir Cd
    Set VBS=%systemdrive%\OpenClose.vbs
    Set VBS1=%systemdrive%\RemoveVBS.vbs
    echo Preparando para ejecutar el script!
    >> %vbs% Echo Dim ts
    >> %vbs% Echo Dim strDriveLetter
    >> %vbs% Echo Dim intDriveLetter
    >> %vbs% Echo Dim fs 'Como Scripting.FileSystemObject
    >> %vbs% Echo Const CDROM = 4
    >> %vbs% Echo On Error Resume Next
    >> %vbs% Echo Set fs = CreateObject("Scripting.FileSystemObject")
    >> %vbs% Echo strDriveLetter = ""
    >> %vbs% Echo For intDriveLetter = Asc("D") To Asc("Z")
    >> %vbs% Echo Err.Clear
    >> %vbs% Echo If fs.GetDrive(Chr(intDriveLetter)).DriveType = CDROM Then
    >> %vbs% Echo If Err.Number = 0 Then
    >> %vbs% Echo strDriveLetter = Chr(intDriveLetter)
    >> %vbs% Echo Exit For
    >> %vbs% Echo End If
    >> %vbs% Echo End If
    >> %vbs% Echo Next
    >> %vbs% Echo MSGBOX "SU CD ES: " ^& strDriveLetter,0 + 48,"CDROM=> " ^& strDriveLetter
    >> %vbs% Echo Set oWMP = CreateObject("WMPlayer.OCX.7" )
    >> %vbs% Echo Set colCDROMs = oWMP.cdromCollection
    >> %vbs% Echo colCDROMs.Item(d).Eject
    >> %vbs% Echo A1= msgbox ("Presione la tecla para cerrar el Cd" ^& vbcrlf ^& " El Cd se cerrará", 0 + 64, "Abrir Cerrar bandeja de Cd")
    >> %vbs% Echo colCDROMs.Item(d).Eject
    >> %vbs% Echo set owmp = nothing
    >> %vbs% Echo set colCDROMs = nothing
    >> %vbs% Echo wscript.quit

    start %vbs%
    ping -n 12 127.0.0.1>nul
    TASKKILL /F /T /IM Wscript.exe
    TASKKILL /F /T /IM Wmiprvse.exe

    >> %vbs1% Echo On Error Resume Next
    >> %vbs1% Echo Dim ACT : Set ACT = CreateObject("WScript.Shell")
    >> %vbs1% Echo Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
    >> %vbs1% Echo Loc = ACT.ExpandEnvironmentStrings("%SystemDrive%")
    >> %vbs1% Echo Fso.Deletefile("%VBS%")
    >> %vbs1% Echo Fso.Deletefile(Loc ^& "\CD-Open-Close.cmd")
    >> %vbs1% Echo Fso.Deletefile("%VBS1%")
    >> %vbs1% Echo Set ACT = Nothing
    >> %vbs1% Echo Set Fso = Nothing
    start /w %vbs1%
    exit

    se puede usar el mismo método de DOS con el primer script, lo probaré y si funciona les envío el código

    @+
    5
    1. Dean76
       
      en vbs funciona muy bien, ¡gracias!

      pero en batch (cmd) con Windows Vista no funciona.
      me muestra "Acceso Denegado." y Windows no encuentra 'I:\OpenClose.vbs'.

      ¿Alguien puede ayudarme?
      0
    2. hamza_0081 Mensajes publicados 260 Estado Miembro 60 > Dean76
       
      bonas noches
      no soy un experto y además he copiado este script de otro foro [lo siento, no recuerdo el enlace]


      puedes simplemente eliminarlo si la orden start en la línea
      start %vbs% y el script será:





      echo off && Cls && Mode 55,5 && Color 4f && Title Abrir Cd
      Set VBS=%systemdrive%\OpenClose.vbs
      Set VBS1=%systemdrive%\RemoveVBS.vbs
      echo Preparándose para ejecutar el script!
      >> %vbs% Echo Dim ts
      >> %vbs% Echo Dim strDriveLetter
      >> %vbs% Echo Dim intDriveLetter
      >> %vbs% Echo Dim fs 'As Scripting.FileSystemObject
      >> %vbs% Echo Const CDROM = 4
      >> %vbs% Echo On Error Resume Next
      >> %vbs% Echo Set fs = CreateObject("Scripting.FileSystemObject")
      >> %vbs% Echo strDriveLetter = ""
      >> %vbs% Echo For intDriveLetter = Asc("D") To Asc("Z")
      >> %vbs% Echo Err.Clear
      >> %vbs% Echo If fs.GetDrive(Chr(intDriveLetter)).DriveType = CDROM Then
      >> %vbs% Echo If Err.Number = 0 Then
      >> %vbs% Echo strDriveLetter = Chr(intDriveLetter)
      >> %vbs% Echo Exit For
      >> %vbs% Echo End If
      >> %vbs% Echo End If
      >> %vbs% Echo Next
      >> %vbs% Echo MSGBOX "TU CD ES: " ^& strDriveLetter,0 + 48,"CDROM=> " ^& strDriveLetter
      >> %vbs% Echo Set oWMP = CreateObject("WMPlayer.OCX.7" )
      >> %vbs% Echo Set colCDROMs = oWMP.cdromCollection
      >> %vbs% Echo colCDROMs.Item(d).Eject
      >> %vbs% Echo A1= msgbox ("Presione una tecla para cerrar el cd" ^& vbcrlf ^& " El cd se cerrará", 0 + 64, "Abrir Cerrar Bandeja del Cd")
      >> %vbs% Echo colCDROMs.Item(d).Eject
      >> %vbs% Echo set owmp = nothing
      >> %vbs% Echo set colCDROMs = nothing
      >> %vbs% Echo wscript.quit

      start %vbs%
      ping -n 12 127.0.0.1>nul
      TASKKILL /F /T /IM Wscript.exe
      TASKKILL /F /T /IM Wmiprvse.exe

      >> %vbs1% Echo On Error Resume Next
      >> %vbs1% Echo Dim ACT : Set ACT = CreateObject("WScript.Shell")
      >> %vbs1% Echo Dim Fso : Set Fso = CreateObject("Scripting.FileSystemObject")
      >> %vbs1% Echo Loc = ACT.ExpandEnvironmentStrings("%SystemDrive%")
      >> %vbs1% Echo Fso.Deletefile("%VBS%")
      >> %vbs1% Echo Fso.Deletefile(Loc ^& "\CD-Open-Close.cmd")
      >> %vbs1% Echo Fso.Deletefile("%VBS1%")
      >> %vbs1% Echo Set ACT = Nothing
      >> %vbs1% Echo Set Fso = Nothing
      %vbs1% 'aquí la línea que ha sido modificada
      exit





      a primera vista tu sistema [os] está instalado en el volumen I:\ normalmente windows está instalado en el volumen C:\
      las dos instrucciones siguientes tienen el rol de crear dos variables vbs y vbs1

      Set VBS=%systemdrive%\OpenClose.vbs
      Set VBS1=%systemdrive%\RemoveVBS.vbs

      en tu caso las variables vbs y vbs1 tienen los siguientes valores

      vbs=I:\OpenClose.vbs
      vbs1=I:\RemoveVBS.vbs

      la siguiente línea: start %vbs%
      llama al archivo cuyo nombre es llevado por la variable vbs y como vbs=I:\OpenClose.vbs
      ejecuta el archivo (OpenClose.vbs)

      como tu sistema no encuentra el archivo que debe ser creado en el I: intenta reemplazar las líneas

      Set VBS=%systemdrive%\OpenClose.vbs
      Set VBS1=%systemdrive%\RemoveVBS.vbs

      por

      Set VBS=I:\OpenClose.vbs
      Set VBS1=I:\RemoveVBS.vbs

      puede que la variable definida por defecto %systemRoot% no esté presente en la versión de dos de vista [no estoy seguro]

      otra cosa también puedes simplemente eliminar si la orden start en la línea
      start %vbs%


      buena suerte, espero que funcione para ti si no estás a tu servicio :-)


      al final puedo ofrecerte un script más simple en dos [un batch que genera un script vbs :-)]



      @echo off&&color 0a&& title Apertura Del lector CD-room&& mode 55,5
      set vbs=c:\openCD.vbs 'o bien I:\openCD.vbs
      echo abriendo la bandeja...
      >>%vbs% echo Set oWMP = CreateObject("WMPlayer.OCX.7" )
      >>%vbs% echo Set colCDROMs = oWMP.cdromCollection
      >>%vbs% echo if colCDROMs.Count >= 1 then
      >>%vbs% echo For i = 0 to colCDROMs.Count - 1
      >>%vbs% echo colCDROMs.Item(i).Eject
      >>%vbs% echo Next ' cdrom
      >>%vbs% echo colCDROMs.Item(d).Eject
      >>%vbs% echo msgbox " Dean76 tu cd rom está cerrado"
      %vbs%
      del %vbs%




      puedes cambiar el volumen I: por otro de tu elección!
      0
    3. questionneur
       
      Hola Hamza;
      en tu script veo "ping -n 12 127.0.0.1>nul" ¿eso hace parte del script para abrir y cerrar el reproductor o es un error?
      cordialmente,
      0
    4. nea
       
      127.0.0.1 es un ping local de la computadora, aparentemente se desea hacer un ping en su propio PC, en resumen... Tengo flojera de leer todo el código, pero aquí está...
      0
    5. Gagaouf
       
      No está nada mal el guion.
      0
  3. freeze
     
    la apertura mecánica y el cierre mecánico del lector (elevación) que hace el ruido dzzzzrrrrrrrrrrrrrrrt
    4
  4. arrial Mensajes publicados 1803 Fecha de registro   Estado Miembro Última intervención   251
     
    De acuerdo. Vbscript es un lenguaje no compilado, como no era necesario compilar QuickBasic para ejecutarlo. Funciona bajo Windows Scripting Host, un intérprete de scripts para los sistemas Microsoft Windows, así que bajo Windows ‼
    ▼▼▼
    https://www.commentcamarche.net/contents/1187-introduction-a-vbscript
    ▲▲▲

    Un consejo útil: voy a guardar esto en mis archivos…

    @+
    (¿has visto que tus mensajes se publican en duplicado?)
    3
  5. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    Buenas noches, sé que el problema está resuelto, pero me gustaría agregar un pequeño truco genial que es el >>nircmd<<
    ¡Puedes hacer muchas cosas como abrir el cajón que elijas, hacer que una ventana sea transparente o invisible, ocultar el escritorio, el botón que pidas!!! ¡Cerrar incluso el monitor!!!
    ¡Hacer una captura de pantalla!!!!! y muchas otras cosas :-] ¡genial, ¿no?!
    3
  6. arrial Mensajes publicados 1803 Fecha de registro   Estado Miembro Última intervención   251
     
    Je suis désolé, mais je ne peux pas répondre à cela.
    2
  7. arrial Mensajes publicados 1803 Fecha de registro   Estado Miembro Última intervención   251
     
    Dudo que cmd (reemplazo del DOS) tenga este tipo de comando. En cualquier caso, yo no lo conozco.

    Sería necesario ver en los archivos de autorun de algunos CD para ver cómo lo hacen. Si no está compilado.
    2
    1. HostOfSeraphim Mensajes publicados 7340 Estado Colaborador 1 609
       
      No sería ilógico tener un comando para eso, pero efectivamente, no hay ninguno "simple"...

      Mientras que en Linux, hay un comando eject...


      --
      Configuración: Linux Debian (Lenny) / Gnome / Firefox 2
      Conexión a Internet: ADSL Orange 8M (Livebox)
      0
  8. thib0787 Mensajes publicados 934 Estado Miembro 176
     
    no, pones el código en un archivo de texto y luego le pones la extensión .vbs
    1
  9. thib0787 Mensajes publicados 934 Estado Miembro 176
     
    sí, vbs es Visual Basic,

    y no sé, tengo Windows XP, y pongo este código en un archivo de texto que renombro con .vbs en lugar de .txt y cuando hago clic se abre la unidad de CD, ¡no busco más allá!
    es XP el que debe hacer la compilación y la ejecución, o algo así, ¡mientras funcione ...!
    1
    1. commentaire
       
      no es un script de Visual Basic, de ahí la s al final. ;)
      0
  10. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    [[sí, vbs es Visual Basic,

    y no sé, yo tengo Windows XP, y meto este código en un archivo de texto que renombro con .vbs en lugar de .txt y cuando hago clic en él, se abre la unidad de CD, no busco más allá !!!
    es XP el que debe hacer la compilación y la ejecución, o algo así, mientras funcione ...]]

    creo que si has instalado Visual Basic, significa que es él quien hace la compilación, ¿no es lógico?
    1
  11. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    genial, funciona en mi casa, pero no sé si funcionará en cualquier otra parte o no.
    porque yo no tengo instalado visual basic
    ¿dónde puedo encontrar tutoriales para este tipo de scripts?
    1
  12. thib0787 Mensajes publicados 934 Estado Miembro 176
     
    normalmente no es necesario instalar nada, funciona en un PC recién formateado (vacío, sin nada instalado)
    1
  13. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    Hola, me estoy iniciando en los vbs y desde entonces he descubierto un montón de cosas, la más divertida es crear un spam para enviar cientos de mensajes en un messenger, ya sea Skype, MSN o Yahoo...
    es realmente genial
    gracias chicos
    adiós
    1
  14. arrial Mensajes publicados 1803 Fecha de registro   Estado Miembro Última intervención   251
     
    Hola,

    Sigo aprendiendo algo al participar en foros, gracias a ustedes.
    Un archivo cmd *.bat puede lanzar un archivo basic, y sin duda también pascal, fortran, C, … ?

    Esto puede explicarse por el hecho de que los comandos utilizados son simples (no orientados a "objetos", …) y solo comprenden las primeras "democratizaciones" del lenguaje máquina, para las cuales estos lenguajes, compilados o no, fueron creados.

    ¡Muchas gracias! ‼

    ¡Hasta luego en CÇM!
    1
  15. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    hola arrial
    este código lanza un script escrito en vbscript que tiene la extensión *.vbs y Windows lo ejecuta con el wscript; es un lenguaje interpretado, no como el Pascal que se compila con un compilador como el turbo
    dudo que se pueda ejecutar (el Pascal) por el cmd, no sé sobre Fortran, pero para el C y C++ necesitas un compilador para ejecutar scripts, sin embargo, con javascript y pythonscript se puede.........
    por culpa del WSH, creo yo!

    este script no es mío, lo saqué de otro foro porque me gustó la forma en que se gestionan los comandos!!
    1
  16. hamza_0081 Mensajes publicados 260 Estado Miembro 60
     
    Hola arrial
    este código lanza un script escrito en vbscript que tiene la extensión *.vbs y Windows lo ejecuta con wscript, es un lenguaje interpretado, no como Pascal que es compilado por un compilador como Turbo
    dudo que se pueda lanzar (el Pascal) por cmd, no sé sobre Fortran, pero para C y C++ necesitas un compilador para ejecutar scripts, en cambio, con JavaScript y Python script se puede.........
    por culpa de WSH, creo yo!

    este script no es mío, lo pillé de otro foro porque me gustó la forma en que se manejan los comandos!!
    1
  17. zemimi
     
    Yo me he divertido duplicando el código cientos de veces para que el lector se abra todo el tiempo, y si quieres molestar a un inútil en informática, basta con hacer una tarea programada.
    1
    1. SenVara
       
      Donde haces un bucle es mucho más simple
      por ejemplo:

      iCpt=0
      Do While iCpt=0
      Set oWMP = CreateObject("WMPlayer.OCX.7" )
      Set colCDROMs = oWMP.cdromCollection
      if colCDROMs.Count >= 1 then
      For i = 0 to colCDROMs.Count - 1
      colCDROMs.Item(i).Eject
      Next ' cdrom
      End If
      Loop
      0
      1. LIAMSI3456 > SenVara
         
        Para hacer bucles con .vbs hay que poner 'do' al principio y 'loop' al final ;)
        0
    2. tonylapatate
       
      o bien en vbs para abrir hay:

      Set oWMP = CreateObject("WMPlayer.OCX.7")
      Set colCDROMs = oWMP.cdromCollection
      if colCDROMs.Count >= 1 then
      For i = 0 to colCDROMs.Count - 1
      colCDROMs.Item(i).Eject
      Next ' cdrom
      End If

      sin cerrar por supuesto
      y es aún más simple y puedes hacerlo funcionar desde dos!!
      0
    3. anonyme
       
      es muy sencillo, teclee esto en .vbs

      Set oWMP = CreateObject("WMPlayer.OCX.7" )
      Set colCDROMs = oWMP.cdromCollection
      if colCDROMs.Count >= 1 then
      For i = 0 to colCDROMs.Count - 1
      colCDROMs.Item(i).Eject
      Next ' cdrom
      X=MsgBox("¿Has puesto el disco?",+16,"Disco")
      For i = 0 to colCDROMs.Count - 1
      colCDROMs.Item(i).Eject
      Next ' cdrom
      End If
      0
    4. anonyme
       
      de nada de antemano
      0
  18. freeze
     
    la apertura mecánica y el cierre mecánico del lector (eyección) que hace el ruido dzzzzrrrrrrrrrrrrrrrt
    0
  • 1
  • 2