Wie kann ich eine CD über das Cmd auswerfen?

96668
Penguinz

Ich habe versucht, das CD-Laufwerk mit der Cmd auszuwerfen.
Ich bin jedoch verblüfft. Bei der Suche im Internet habe ich nur diese Antwort gefunden:

eject D: 

und eine ähnliche Antwort

eject D: /I 

Beide funktionieren nicht.

EDIT
Nun haben Leute diese Antwort auf Superuser gefunden,

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

Ich bekomme jedoch einen Fehler:

colCDROMS.Item wird nicht als interner oder externer Befehl, als bedienbares Programm oder als Batch-Datei erkannt.

22
Im läuft Windows 7, Batch-Dateien von XP funktionieren möglicherweise nicht. vor 9 Jahren 0
Ich stelle eine Meta-Frage zu diesem Thema, da ich auch verwirrt bin und der Tag nicht erwähnt, wann "batch-file" -Fragen nicht mehr zum Thema gehören. cybermonkey vor 9 Jahren 0
Die XP-Version gibt mir Probleme. vor 9 Jahren 0
Zu Meta: [Wann sind 'Batch-File'-Fragen außerhalb des Themas?] (Http://meta.stackoverflow.com/questions/305964/when-are-batch-file-questions-off-topic). cybermonkey vor 9 Jahren 0
Dies ist in reinen Batch natürlich nicht möglich. Was genau wollen Sie erreichen? Ist es still gelaufen? Sind andere Befehlszeilenumgebungen (Powershell) akzeptabel? Daniel B vor 9 Jahren 0
Das ist definitiv kein Batch-File-Scripting. es ist VBS Canadian Luke vor 9 Jahren 2
https://www.codeguru.com/cpp/wp/system/cd-rom/article.php/c5775/CDREXE--OpenClose-CD-Drives-Programmatic.htm neverMind9 vor 5 Jahren 0

6 Antworten auf die Frage

20
RookieTEC9

You can eject a cd with a batch file (this is part 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 

This is not my work, I found it in the stackoverflow community:

Post Link: Batch Command Line to Eject CD Tray?
Answer Author: Bruno
Date Answered: Feb 10, 2015

Sie müssen angeben, wo Sie es herbekommen haben: * Dies ist nicht meine Arbeit, ich habe es online gefunden. *. Wenn Sie sich nicht erinnern können, müssen Sie Ihre Antwort aus urheberrechtlichen Gründen löschen. cybermonkey vor 9 Jahren 14
Diese Antwort wird auf Meta diskutiert: [Wie gehen wir mit Antworten um, die sich nicht zuordnen lassen?] (Http://meta.stackoverflow.com/questions/305965/how-do-we-deal-with-answers-that- Nicht-Attribut) cybermonkey vor 9 Jahren 0
Technisch gesehen ist dies eine VBS-Lösung, keine Batch-File-Lösung. Dan Henderson vor 9 Jahren 6
Um meinen vorherigen Kommentar zu verdeutlichen, möchte ich nicht sagen, dass dies keine angemessene Antwort auf die oben genannte Frage ist. Lediglich die Anfangszeile "Sie können eine CD mit einer Batch-Datei auswerfen" sollte etwas geändert werden. Wenn die Konfiguration meines Systems die Ausführung von Batchdateien, jedoch nicht von VB-Skripts unterstützt, funktioniert diese Antwort für mich nicht. Dan Henderson vor 9 Jahren 4
Seit Dezember 2016 erkennt Windows Defender unter Windows 10 das erzeugte Skript bei seiner Ausführung als Virus hooby3dfx vor 7 Jahren 0
16
rojo

Sie können Shell.Applicationdie InvokeVerbMethode des COM-Objekts verwenden. An einer Cmd-Eingabeaufforderung können Sie einen PowerShell-Einzeiler auf diese Weise 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 ein Beispiel mit einem hybriden Batch + 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, kann dies ebenfalls arrangiert werden. Hier ist eine vollständigere Version mit Kommentaren, die einige der nicht selbsterklärenden Werte erläutert.

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

Using WMPlayer.OCX.7 will startled most of the anti-virus programs and there are some versions of windows that come without media player. Here's a way with shell.application and invokeVerb function:

save this with .bat extension:

@cScript.EXE //noLogo "%~f0?.WSF" //job:info %~nx0 %* @exit /b 0 <job id="info"> <script language="VBScript"> if WScript.Arguments.Count < 2 then WScript.Echo "No drive letter passed" WScript.Echo "Usage: " WScript.Echo " " & WScript.Arguments.Item(0) & " " WScript.Echo " * will eject all cd drives" WScript.Quit 1 end if driveletter = WScript.Arguments.Item(1): driveletter = mid(driveletter,1,1): Public Function ejectDrive (drvLtr) Set objApp = CreateObject( "Shell.Application" ): Set objF=objApp.NameSpace(&H11&): 'WScript.Echo(objF.Items().Count): set MyComp = objF.Items(): for each item in objF.Items() : iName = objF.GetDetailsOf (item,0): iType = objF.GetDetailsOf (item,1): iLabels = split (iName, "(" ) : iLabel = iLabels(1): if Ucase(drvLtr & ":)") = iLabel and iType = "CD Drive" then set verbs=item.Verbs(): set verb=verbs.Item(verbs.Count-4): verb.DoIt(): item.InvokeVerb replace(verb,"&","") : ejectDrive = 1: exit function: end if next ejectDrive = 2: End Function Public Function ejectAll () Set objApp = CreateObject( "Shell.Application" ): Set objF=objApp.NameSpace(&H11&): 'WScript.Echo(objF.Items().Count): set MyComp = objF.Items(): for each item in objF.Items() : iType = objF.GetDetailsOf (item,1): if iType = "CD Drive" then set verbs=item.Verbs(): set verb=verbs.Item(verbs.Count-4): verb.DoIt(): item.InvokeVerb replace(verb,"&","") : end if next End Function if driveletter = "*" then call ejectAll WScript.Quit 0 end if result = ejectDrive (driveletter): if result = 2 then WScript.Echo "no cd drive found with letter " & driveletter & ":" WScript.Quit 2 end if </script> </job> 

You can use it like (for more info -)

call eject.bat * 
4
GuestGeorge

Befehlszeile CD-Auswurf Oneliner:

In einer bat-Datei oder direkt in cmddieser nach der ersten Ausführung von wmplayerWindows 8:

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

Wenn Sie eine Drittanbieteranwendung verwenden können, können Sie nirsmds von Nirsoft verwenden . Auf allen PCs, die ich ausprobierte (von Windows XP bis Windows 8), konnte ich die CD mit folgendem Befehl auswerfen:

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

Wo ist X Ihr Laufwerkbuchstabe.

0
EffeDB

In Windows 10 verwende ich dieses kleine Skript. Es klappt!

dim oWMP Set oWMP = CreateObject("WMPlayer.OCX.7") Set colCDROMs = oWMP.cdromCollection colCDROMs.Item(0).Eject set oWMP = nothing 
Bitte lesen Sie die Frage noch einmal sorgfältig. Ihre Antwort beantwortet die ursprüngliche Frage nicht **. Op verwendet Windows 7 und er hat Ihr Skript bereits ausprobiert und sagte, dass es nicht funktioniert hat. DavidPostill vor 8 Jahren 0
Ist dieses Skript für cmd, powershell oder smth sonst? YakovL vor 7 Jahren 0