cmd를 통해 CD를 꺼내려면 어떻게해야합니까?


24

cmd를 사용하여 CD 드라이브를 꺼내려고했습니다.
그러나 나는 혼란에 빠졌다. 인터넷에서 검색하면이 답변 만 찾았습니다.

eject D: 

그리고 비슷한 대답

eject D: /I

둘 다 작동하지 않습니다.

편집
이제 사람들은 수퍼 유저에서이 답변을 찾았습니다.

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

그러나 오류가 발생합니다.

colCDROMS.Item은 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.


Windows 7을 실행 중이므로 xp의 배치 파일이 작동하지 않을 수 있습니다.

혼란스러워서 메타에 대한 질문을하고 있으며 태그는 batch-file질문이 주제를 벗어난 시점을 언급하지 않습니다 .
AStopher

XP 버전에서 문제가 발생했습니다.


2
그것은 확실히 배치 파일 스크립팅이 아닙니다. VBS
Canadian Luke REINSTATE MONICA

답변:


19

배치 파일로 CD를 추출 할 수 있습니다 (이 부분은 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

이것은 내 작품이 아니며, stackoverflow 커뮤니티에서 찾았습니다.

Post Link : CD 트레이를 꺼내기위한 배치 명령 줄?
답변 저자 : Bruno
답변 날짜 : 2015 년 2 월 10 일


14
어디서 구했는지 알려줘야합니다. 이건 내 작품이 아니고 온라인에서 찾았습니다. . 기억이 안 나면 저작권상의 이유로 답변을 삭제해야합니다.
AStopher

이 답변은 메타에 대해 논의 중입니다. 속성이 아닌 답변은 어떻게 처리합니까?
AStopher

6
엄밀히 말하면 이것은 배치 파일 솔루션이 아닌 VBS 솔루션입니다.
Dan Henderson

4
내 이전 의견을 명확히하기 위해, 이것은 언급 된 질문에 대한 적절한 대답이 아니라는 것입니다. 개시 줄 "배치 파일로 CD를 꺼낼 수 있습니다"는 약간 수정해야합니다. 시스템 구성이 배치 파일의 실행을 지원하지만 VB 스크립트의 실행을 지원하지 않으면이 답변이 작동하지 않습니다.
Dan Henderson

년 12 월 2016로, 윈도우 10에서 Windows Defender는 실행할 때 바이러스로 생성 된 스크립트를 감지
hooby3dfx

18

Shell.ApplicationCOM 개체의 InvokeVerb메서드를 사용할 수 있습니다 . cmd 프롬프트에서 PowerShell one-liner를 남용 할 수 있습니다.

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

Windows 스크립팅 호스트 (VBScript / JScript)를 사용하여 COM 개체를 호출 할 수도 있습니다. 하이브리드 Batch + Jscript 스크립트 (.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');

스크립트가 CD 드라이브의 드라이브 문자를 감지하도록하려면이를 정렬 할 수도 있습니다. 다음은 비 설명 값 중 일부를 설명하는 주석이 포함 된보다 완전한 버전입니다.

@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

명령 줄 CD 꺼내기 oneliner :

박쥐 파일 또는 직접 Windows 8에서 cmd처음 실행 한 후 작동했습니다 wmplayer.

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

4

를 사용 WMPlayer.OCX.7하면 대부분의 안티 바이러스 프로그램이 놀라워지고 미디어 플레이어없이 제공되는 일부 버전의 창이 있습니다. shell.application 및 invokeVerb 함수를 사용하는 방법은 다음과 같습니다.

이것을 .bat확장자로 저장하십시오 :

@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) & " {LETTER|*}"
            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>

당신은 그것을처럼 사용할 수 있습니다 (자세한 정보-)

call eject.bat *

심지어와 eject.bat *는 나에게 말한다 no cd drive found with letter d:. 왜 이것이 될 수 있습니까? 드라이브를 마우스 오른쪽 버튼으로 클릭하고 "꺼내기"를 선택하면 꺼집니다.
브래드 투렉

@BradTurek-언어 일 수 있습니다 (영어가 아닌 경우). 또는 CD 드라이브를 마우스 오른쪽 버튼으로 클릭하는 것과 관련된 사용자 지정 작업이있는 경우. CD / DVD 장치를 마우스 오른쪽 단추로 클릭하면 맨 아래에서 4 번째 (기본 위치) 꺼내기 동작이 수행됩니다.
npocmaka

0

타사 응용 프로그램을 사용할 수 있으면 Nirsoft의 nircmd를 사용할 수 있습니다 . 시도한 모든 PC (Windows XP에서 Windows 8까지)에서 다음을 사용하여 디스크를 꺼낼 수 있습니다.

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

여기서 X는 디스크 드라이브 문자입니다.


0

Windows 10에서는이 작은 스크립트를 사용합니다. 작동합니다!

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

질문을주의 깊게 다시 읽으십시오. 귀하의 답변은 원래 질문에 대한 답변이 아닙니다 . Op는 Windows 7을 사용하고 있으며 이미 스크립트를 사용해 보았지만 작동하지 않는다고 말했습니다.
DavidPostill

이 스크립트는 cmd, powershell 또는 smth에 대한 것입니까?
YakovL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.