आप Shell.Application
COM ऑब्जेक्ट की 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();
}