Wie kann ich eine CD per cmd auswerfen?

Wie kann ich eine CD per cmd auswerfen?

Ich habe versucht, das CD-Laufwerk mithilfe der Eingabeaufforderung auszuwerfen.
Ich bin jedoch ratlos. Bei der Suche im Internet habe ich nur diese Antwort gefunden:

eject D: 

und eine ähnliche Antwort

eject D: /I

Beides funktioniert nicht.

EDIT
Jetzt haben die Leute diese Antwort auf Superuser gefunden,

Set oWMP = CreateObject("WMPlayer.OCX.7")
Set colCDROMs = oWMP.cdromCollection
colCDROMs.Item(0).Eject

Ich erhalte jedoch eine Fehlermeldung:

colCDROMS.Item wird nicht als interner oder externer Befehl, ausführbares Programm oder Batchdatei erkannt.

Antwort1

Sie können eine CD mit einer Batchdatei auswerfen (dies ist Teil 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

Dies ist nicht meine Arbeit, ich habe es in der Stackoverflow-Community gefunden:

Link zum Beitrag:Batch-Befehlszeile zum Auswerfen des CD-Fachs?
Antwort Autor:Bruno
Datum der Beantwortung: 10. Februar 2015

Antwort2

Sie könnten die Methode Shell.Applicationdes COM-Objekts verwenden InvokeVerb. Von einer Eingabeaufforderung aus können Sie einen PowerShell-Einzeiler folgendermaßen missbrauchen:

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

Sie können auch Windows Scripting Host (VBScript / JScript) verwenden, um das COM-Objekt aufzurufen. Hier ist ein Beispiel mit einem hybriden Batch- und Jscript-Skript (speichern Sie es mit der Erweiterung .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');

Wenn Sie möchten, dass Ihr Skript den Laufwerksbuchstaben für das CD-Laufwerk erkennt, ist das ebenfalls möglich. Hier ist eine ausführlichere Version mit Kommentaren, die einige der nicht selbsterklärenden Werte erklären.

@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();
}

Antwort3

Einzeilenprogramm zum Auswerfen einer CD per Kommandozeile:

In einer Bat-Datei oder direkt cmdhierin hat nach dem ersten Ausführen wmplayerunter Windows 8 Folgendes funktioniert:

powershell (New-Object -com "WMPlayer.OCX.7").cdromcollection.item(0).eject()

Antwort4

Wenn Sie eine Drittanbieteranwendung verwenden können, können Sienircmd von Nirsoft. Auf allen PCs, die ich ausprobiert habe (von Windows XP bis Windows 8), konnte ich die CD wie folgt auswerfen:

"C:\path_to\nircmd.exe" cdrom open X:

Wobei X der Laufwerksbuchstabe Ihres Laufwerks ist.

verwandte Informationen