Saltar al contenido

¿Cómo puedo expulsar un CD a través del cmd?

No dudes en compartir nuestro sitio y códigos en tus redes sociales, ayúdanos a aumentar nuestra comunidad.

Solución:

Puede expulsar un cd con un archivo por lotes (esto es parte de vbscript

@echo off
echo Set oWMP = CreateObject("WMPlayer.OCX.7")  >> %temp%temp.vbs
echo Set colCDROMs = oWMP.cdromCollection       >> %temp%temp.vbs
echo For i = 0 to colCDROMs.Count-1             >> %temp%temp.vbs
echo colCDROMs.Item(i).Eject                    >> %temp%temp.vbs
echo next                                       >> %temp%temp.vbs
echo oWMP.close                                 >> %temp%temp.vbs
%temp%temp.vbs
timeout /t 1
del %temp%temp.vbs

Este no es mi trabajo, lo encontré en la comunidad de stackoverflow:

Enlace de publicación: ¿Lote de línea de comandos para expulsar la bandeja de CD?
Autor de la respuesta: Bruno
Fecha de respuesta: 10 de febrero de 2015

Podrías usar el Shell.Application Objetos COM InvokeVerb método. Desde un indicador de cmd, puede abusar de una línea de PowerShell de la siguiente manera:

powershell "(new-object -COM Shell.Application).NameSpace(17).ParseName('D:').InvokeVerb('Eject')"

También puede utilizar Windows Scripting Host (VBScript / JScript) para invocar el objeto COM. Aquí hay un ejemplo que usa un script híbrido Batch + Jscript (guárdelo con una extensión .bat):

@if (@CodeSection == @Batch) @then

@echo off
setlocal

set "CDdrive=D:"

cscript /nologo /e:JScript "%~f0" "%CDdrive%"

goto :EOF

@end // end batch / begin JScript hybrid chimera
var oSH = WSH.CreateObject('Shell.Application');
oSH.NameSpace(17).ParseName(WSH.Arguments(0)).InvokeVerb('Eject');

Si prefiere que su secuencia de comandos detecte la letra de la unidad de CD, también se puede organizar. Aquí hay una versión más completa con comentarios que explican algunos de los valores que no se explican por sí mismos.

@if (@CodeSection == @Batch) @then

@echo off
setlocal

cscript /nologo /e:JScript "%~f0"

goto :EOF

@end // end batch / begin JScript hybrid chimera

// DriveType=4 means CD drive for a WScript FSO object.
// See http://msdn.microsoft.com/en-us/library/ys4ctaz0%28v=vs.84%29.aspx

// NameSpace(17) = ssfDRIVES, or My Computer.
// See http://msdn.microsoft.com/en-us/library/windows/desktop/bb774096%28v=vs.85%29.aspx

var oSH = new ActiveXObject('Shell.Application'),
    FSO = new ActiveXObject('Scripting.FileSystemObject'),
    CDdriveType = 4,
    ssfDRIVES = 17,
    drives = new Enumerator(FSO.Drives);

while (!drives.atEnd()) 
    var x = drives.item();
    if (x.DriveType == CDdriveType) 
        oSH.NameSpace(ssfDRIVES).ParseName(x.DriveLetter + ':').InvokeVerb('Eject');
        while (x.IsReady)
            WSH.Sleep(50);
    
    drives.moveNext();

Utilizando WMPlayer.OCX.7 Asombrará a la mayoría de los programas antivirus y hay algunas versiones de Windows que vienen sin reproductor multimedia. Aquí hay una forma con la función shell.application e invokeVerb:

guarda esto con .bat extensión:

@cScript.EXE //noLogo "%~f0?.WSF"  //job:info %~nx0 %*
@exit /b 0

   
      
  

Puedes usarlo como (para más información -)

call eject.bat *

Calificaciones y reseñas

Si eres capaz, tienes la libertad de dejar un ensayo acerca de qué le añadirías a este post.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *