मैं cmd ​​के माध्यम से सीडी कैसे निकाल सकता हूं?


24

मैं cmd ​​के उपयोग के साथ cd ड्राइव को बाहर करने की कोशिश कर रहा हूं।
हालांकि, मैं स्तब्ध हूं। इंटरनेट पर खोज करने पर, मुझे केवल यह उत्तर मिला:

eject D: 

और एक अनुकरणीय जवाब

eject D: /I

ये दोनों काम नहीं करते।

EDIT
अब लोगों ने सुपरसुसर पर यह जवाब पाया है,

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

हालाँकि, मुझे एक त्रुटि मिली:

colCDROMS.Item को आंतरिक या बाह्य कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है।


Im विंडोज 7 चल रहा है, इसलिए xp से बैच फाइलें काम नहीं कर सकती हैं।

मैं इस पर एक मेटा सवाल पूछ रहा हूँ जब से मैं उलझन में हूँ, और टैग का कोई जिक्र नहीं है जब batch-fileप्रश्न ऑफ-टॉपिक बन जाते हैं।
असोटोफर

XP संस्करण मुझे समस्याएं दे रहा है।


2
यह निश्चित रूप से बैच-फ़ाइल स्क्रिप्टिंग नहीं है; यह VBS है
कनाडाई ल्यूक पुनर्निर्मित MONICA

जवाबों:


19

आप एक बैच फ़ाइल के साथ एक सीडी निकाल सकते हैं (यह भाग 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

यह मेरा काम नहीं है, मैंने इसे स्टैकओवरफ्लो समुदाय में पाया:

पोस्ट लिंक: बैच ट्रे को निकालने के लिए बैच कमांड लाइन?
उत्तर लेखक: ब्रूनो
तिथि उत्तर: 10 फरवरी, 2015


14
आपको यह बताने की आवश्यकता है कि आपको यह कहाँ से मिला: यह मेरा काम नहीं है, मैंने इसे ऑनलाइन पाया। । यदि आपको याद नहीं है, तो आपको कॉपीराइट कारणों से अपना उत्तर हटाने की आवश्यकता है।
14


6
तकनीकी रूप से, यह एक VBS समाधान है, न कि बैच फ़ाइल समाधान।
दान हेंडरसन

4
अपनी पिछली टिप्पणी को स्पष्ट करने के लिए, मेरा यह कहने का मतलब यह नहीं है कि यह प्रश्न के लिए एक उपयुक्त उत्तर नहीं है, जैसा कि कहा गया है कि शायद शुरुआती लाइन "आप बैच फ़ाइल के साथ सीडी को अस्वीकार कर सकते हैं" थोड़ा संशोधित किया जाना चाहिए। यदि मेरे सिस्टम का कॉन्फ़िगरेशन बैच फ़ाइलों के निष्पादन का समर्थन करता है, लेकिन VB लिपियों का नहीं, तो यह उत्तर मेरे लिए काम नहीं करेगा।
डैन हेंडरसन

दिसंबर 2016 तक, विंडोज 10 पर विंडोज डिफेंडर रन करते समय उत्पन्न स्क्रिप्ट का वायरस के रूप में पता
लगाएगा

18

आप Shell.ApplicationCOM ऑब्जेक्ट की InvokeVerbविधि का उपयोग कर सकते हैं । एक cmd प्रॉम्प्ट से, आप एक PowerShell वन-लाइनर का दुरुपयोग कर सकते हैं:

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

COM ऑब्जेक्ट को इनवॉइस करने के लिए आप Windows स्क्रिप्टिंग होस्ट (VBScript / 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');

यदि आप अपनी स्क्रिप्ट को सीडी ड्राइव के लिए ड्राइव अक्षर का पता लगाना पसंद करते हैं, तो उसे भी व्यवस्थित किया जा सकता है। यहां टिप्पणियों के साथ एक अधिक पूर्ण संस्करण है, जो कुछ गैर-आत्म-व्याख्यात्मक मूल्यों की व्याख्या करता है।

@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-eject ऑनलाइनर:

विंडोज 8 पर cmdपहले रन के बाद एक बैट फाइल में या सीधे इसमें काम किया wmplayer:

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

4

का उपयोग करते हुए WMPlayer.OCX.7अधिकांश एंटी-वायरस प्रोग्राम को चौंका दिया जाएगा और मीडिया प्लेयर के बिना विंडोज़ के कुछ संस्करण हैं। यहाँ शेल.एप्पलिकेशन और इनवॉकर फ़ंक्शन के साथ एक तरीका है:

इसे .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 ड्राइव पर राइट क्लिक से जुड़ी कस्टम एक्शन हैं। यदि आप सीडी / डीवीडी डिवाइस को राइट-क्लिक करते हैं तो बेदखल करने की कार्रवाई नीचे से 4 वें स्थान पर होनी चाहिए (डिफ़ॉल्ट स्थान)।
npocmaka

0

यदि आप किसी तृतीय-पक्ष एप्लिकेशन का उपयोग कर सकते हैं, तो आप Nirsoft के nircmd का उपयोग कर सकते हैं । सभी पीसी पर मैंने कोशिश की (विंडोज एक्सपी से विंडोज 8 तक), मैं डिस्क का उपयोग कर बाहर निकाल सकता हूं:

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

जहां X आपका डिस्क ड्राइव लेटर है।


0

विंडोज 10 में मैं इस छोटी स्क्रिप्ट का उपयोग करता हूं। यह काम करता हैं!

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

कृपया प्रश्न को फिर से ध्यान से पढ़ें। आपका उत्तर मूल प्रश्न का उत्तर नहीं देता है । Op विंडोज 7 का उपयोग कर रहा है और उसने पहले ही आपको स्क्रिप्ट की कोशिश की और कहा कि यह काम नहीं किया।
DavidPostill

क्या यह स्क्रिप्ट cmd, शक्तियां या स्मथ के लिए है?
याकॉव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.