SIMPLE SAFE EJECTION OF ALL CONNECTED FLASH DRIVES

SIMPLE SAFE EJECTION OF ALL CONNECTED FLASH DRIVES

Today i’m not planning any fancy stuff, just a plain USB drive ejector at your disposal.
Script ejects all connected flash drives.
If drive is in use or some software is locking flash drive it won’t be ejected [obviously].

@echo off
setlocal enabledelayedexpansion

set "drivelist=%temp%\usb_drives_list.txt"
del "%drivelist%" >nul 2>nul

for /f "skip=1 tokens=1" %%D in ('wmic logicaldisk where "drivetype=2" get deviceid') do (
    if exist "%%D\" (
        echo %%D>>"%drivelist%"
    )
)

if not exist "%drivelist%" (
    echo No flash drives found!
    pause
    exit /b
)


for /f "usebackq delims=" %%D in ("%drivelist%") do (
        powershell -NoProfile -Command "(New-Object -ComObject Shell.Application).NameSpace(17).ParseName('%%D').InvokeVerb('Eject')"
    )
echo Flash drives ejected!
)