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.Application
des 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 cmd
hierin hat nach dem ersten Ausführen wmplayer
unter 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.