View Single Post
Old 16-01-2024, 14:22   #12
Schilo
Senior Member
 
Iscritto dal: May 2008
Messaggi: 648
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.
Schilo è offline   Rispondi citando il messaggio o parte di esso