আমি কীভাবে সিএমডি মাধ্যমে সিডি বের করতে পারি?


24

আমি সিএমডি ব্যবহার করে সিডি ড্রাইভটি বের করার চেষ্টা করছি।
তবে আমি স্টাম্পড। ইন্টারনেটে অনুসন্ধান করে আমি কেবল এই উত্তরটি পেয়েছি:

eject D: 

এবং একটি অবিশ্বাস্য উত্তর

eject D: /I

দুজনেরই কাজ হয় না।

সম্পাদনা করুন
এখন লোকেরা সুপারভাইজারে এই উত্তরটি খুঁজে পেয়েছে,

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

তবে, আমি একটি ত্রুটি পেয়েছি:

colCDROMS. আইটেমটি অভ্যন্তরীণ বা বাহ্যিক কমান্ড, অপারেবল প্রোগ্রাম বা ব্যাচ ফাইল হিসাবে স্বীকৃত নয়।


আমি উইন্ডোজ 7 চালাচ্ছি, সুতরাং এক্সপি থেকে ব্যাচ ফাইলগুলি কাজ নাও করতে পারে।

আমি এ নিয়ে একটি মেটা প্রশ্ন জিজ্ঞাসা করছি যেহেতু আমি পাশাপাশি বিভ্রান্ত হয়েছি, এবং ট্যাগগুলি কখন batch-fileপ্রশ্ন ছাড়াই বিষয়বস্তু হয়ে যায় তার কোনও উল্লেখ নেই ।
এশোফার

এক্সপি সংস্করণ আমাকে সমস্যা দিচ্ছে।


2
এটি অবশ্যই ব্যাচ-ফাইল স্ক্রিপ্টিং নয়; এটি ভিবিএস
কানাডিয়ান লুক

উত্তর:


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
আপনি এটি কোথা থেকে পেয়েছেন তা জানিয়ে দেওয়া দরকার: এটি আমার কাজ নয়, আমি এটি অনলাইনে খুঁজে পেয়েছি। । যদি আপনি মনে রাখতে না পারেন তবে কপিরাইটের কারণে আপনার উত্তর মুছতে হবে।
এশোফার


6
প্রযুক্তিগতভাবে বলতে গেলে, এটি একটি ভিবিএস সমাধান, কোনও ব্যাচের ফাইল সমাধান নয়।
ড্যান হেন্ডারসন

4
আমার পূর্ববর্তী মন্তব্যটি স্পষ্ট করার জন্য, আমি বলতে চাইছি না যে এটি যেমনটি বলা হয়েছে প্রশ্নের উপযুক্ত উত্তর নয়, কেবলমাত্র সম্ভবত যে খোলার লাইনটি "আপনি একটি ব্যাচের ফাইলের সাথে সিডি বের করতে পারেন" সামান্য পরিবর্তন করা উচিত। যদি আমার সিস্টেমের কনফিগারেশনটি ব্যাচ ফাইলগুলি কার্যকর করতে সমর্থন করে তবে ভিবি স্ক্রিপ্টগুলি নয়, এই উত্তরটি আমার পক্ষে কার্যকর হবে না।
ড্যান হেন্ডারসন

ডিসেম্বর 2016 হিসাবে, উইন্ডোজ 10-এ উইন্ডোজ ডিফেন্ডার চালিত হওয়ার সময় উত্পন্ন স্ক্রিপ্টটিকে ভাইরাস হিসাবে সনাক্ত করবে
hooby3dfx

18

আপনি Shell.ApplicationCOM অবজেক্টের InvokeVerbপদ্ধতিটি ব্যবহার করতে পারেন । একটি সেন্টিমিডি প্রম্পট থেকে আপনি পাওয়ারশেলের ওয়ান-লাইনারকে এভাবে অপব্যবহার করতে পারেন:

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

আপনি COM অবজেক্টটি চালাতে উইন্ডোজ স্ক্রিপ্টিং হোস্ট (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

কমান্ড লাইন সিডি-ইজেক্ট অনেলাইনার:

কোনও ব্যাট ফাইলে বা সরাসরি উইন্ডোজ 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:। কেন হতে পারে? আমি যদি ড্রাইভটি ডানদিকে ক্লিক করি এবং "বের করুন" বেছে নিই, তবে তা বেরিয়ে আসে।
ব্র্যাড টুরেক

@ ব্র্যাড টুরেক - এটি ভাষা হতে পারে (যদি এটি ইংরেজি না হয়)। অথবা সিডি ড্রাইভের ডান ক্লিকের সাথে আপনার যদি কাস্টম ক্রিয়া যুক্ত থাকে। আপনি যদি সিডি / ডিভিডি ডিভাইসে ডান-ক্লিক করেন তবে নিষ্ক্রিয় ক্রিয়াটি নীচে থেকে 4 তম হওয়া উচিত (ডিফল্ট স্থান)।
এনপোকমাকা

0

আপনি যদি কোনও তৃতীয় পক্ষের অ্যাপ্লিকেশন ব্যবহার করতে পারেন তবে আপনি নীরসফ্টের nircmd ব্যবহার করতে পারেন । আমি যে সমস্ত পিসি চেষ্টা করেছি (উইন্ডোজ এক্সপি থেকে উইন্ডোজ 8 এ), আমি ডিস্কটি ব্যবহার করে এটি ব্যবহার করতে পারি:

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

যেখানে এক্স আপনার ডিস্ক ড্রাইভ লেটার।


0

উইন্ডোজ 10 এ আমি এই ছোট স্ক্রিপ্টটি ব্যবহার করি। এটি কাজ করে!

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

প্রশ্নটি আবার মনোযোগ সহকারে পড়ুন। আপনার উত্তরটি মূল প্রশ্নের উত্তর দেয় না । ওপ উইন্ডোজ using ব্যবহার করছে এবং সে ইতিমধ্যে আপনাকে স্ক্রিপ্ট চেষ্টা করেছে এবং বলেছে যে এটি কার্যকর হয়নি।
ডেভিডপস্টিল

এই স্ক্রিপ্টটি কি সিএমডি, পাওয়ারশেল বা স্মেথের জন্য?
ইয়াকভল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.