Si può comunque provare a fare meglio, pur rimanendo in ambito AutoIt con cui è stato scritto isSSD.
Non ci sono troppe preclusioni in AutoIt tra dischi interni ed esterni (funzione
DriveGetType).
Perciò propongo anche il mio script:
Codice:
; MyIsSsd.au3
; Compilare con: Aut2exe /in MyIsSsd.au3
#include <AutoItConstants.au3>
; Check command line params
If $CmdLine[0] <> 1 Then
Exit 3
EndIf
; Drive letter to check is the first parameter
$DriveLetter = $CmdLine[1]
; Get drive type and verify it exists
$type = DriveGetType($DriveLetter, $DT_DRIVETYPE)
If @error Then
Exit 2
Else
; Get SSD status (blank return is non-SSD)
$ssd = DriveGetType($DriveLetter, $DT_SSDSTATUS)
EndIf
; Return 1 if it is an SSD, otherwise 0
If $ssd = "SSD" Then
Exit 1
Else
Exit 0
EndIf
Il codice è preso in larga parte dallo script di esempio pubblicato qui:
https://www.autoitconsulting.com/sit...sing-a-script/
Una volta ottenuto MyIsSsd.exe ho preparato un batch di test (TestMyIsSsd.cmd):
Codice:
@echo off
MyIsSsd %1 %2
if errorlevel 3 (
echo Numero errato di parametri della linea di comando.
) else if errorlevel 2 (
echo Errore nel rilevamento del disco %1
) else if errorlevel 1 (
echo Disco %1 rilevato come SSD.
) else (
echo Disco %1 rilevato come non-SSD.
)
Non sono stato a rifinirlo con fronzoli, tutto si può ovviamente migliorare.
Ho quindi fatto un test su un mio PC con 6 dischi disponibili, tra interni ed esterni:
Codice:
c:\TEMP>for %d in (C: D: E: F: H: J: K:) do TestMyIsSsd %d
c:\TEMP>TestMyIsSsd C:
Disco C: rilevato come SSD.
c:\TEMP>TestMyIsSsd D:
Disco D: rilevato come non-SSD.
c:\TEMP>TestMyIsSsd E:
Disco E: rilevato come non-SSD.
c:\TEMP>TestMyIsSsd F:
Disco F: rilevato come SSD.
c:\TEMP>TestMyIsSsd H:
Disco H: rilevato come non-SSD.
c:\TEMP>TestMyIsSsd J:
Errore nel rilevamento del disco J:
c:\TEMP>TestMyIsSsd K:
Disco K: rilevato come non-SSD.
Risultato per me più che soddisfacente, tenuto conto che:
C: è un SSD Samsung montato internamente su bus SATA;
D: è una pendrive USB;
E: è un masterizzatore CD/DVD/BD esterno USB;
F: è un SSD esterno USB (Samsung T7 Shield);
H: è un disco meccanico da 3.5" esterno USB (WD My Book);
J: non esiste proprio....
K: è un disco meccanico da 2.5" esterno USB (Toshiba).
Non posso certo dire che sia universale o infallibile ma, almeno per i dischi che ho a disposizione al momento, sembra rispondere ai requisiti richiesti compresi quelli iniziali dell'OP. Da qui si può eventualmente prendere spunto per ampliare, migliorare e quant'altro di proprio gusto.