Anda bisa menggunakan metode Shell.Application
objek COM InvokeVerb
. Dari prompt cmd, Anda dapat menggunakan PowerShell one-liner dengan demikian:
powershell "(new-object -COM Shell.Application).NameSpace(17).ParseName('D:').InvokeVerb('Eject')"
Anda juga dapat menggunakan Host Scripting Windows (VBScript / JScript) untuk memanggil objek COM. Berikut ini contoh menggunakan skrip Batch + Jscript hybrid (simpan dengan ekstensi .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');
Jika Anda lebih suka skrip Anda mendeteksi huruf drive untuk drive CD, itu dapat diatur juga. Berikut adalah versi yang lebih lengkap dengan komentar yang menjelaskan beberapa nilai yang tidak jelas.
@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();
}