Sembrerebbe semplicissimo, peccato però che il nome dell'unità USB non sia fisso, ma possa cambiare a seconda dell'ordine con cui eventuali apparati USB sono collegati al sistema. Con un po' di VBS si risolve però tutto:
On Error Resume Next Set objFSO = CreateObject("Scripting.FileSystemObject") Set colDrives = objFSO.Drives Unita = "" For Each objDrive in colDrives If objDrive.isReady Then If objDrive.DriveType = 1 Then Unita = objDrive.DriveLetter End If End If Next If Unita = "" Then Wscript.Echo "Memoria USB non rilevata! Impossibile Salvare" Wscript.Quit(1) End If Wscript.Echo "Salvataggio in corso in " & Unita & ":\Backup\" objFSO.CreateFolder(Unita & ":\Backup\") Err.Clear objFSO.CopyFile "C:\Percorso\Origine.dat", Unita & ":\Backup\VaccinatiBAK.dat", True If (Err.Number > 0) Then Wscript.Echo "Errore nella copia di backup: " & Err.Description Else Wscript.Echo "Copia OK" End If
objDrive.DriveType vale 1 per le unità di tipo Flash. Ricercando soltanto le unità con objDrive.isReady impostato a vero si escludono eventuali unità quali lettori di card flash, nel caso in cui una flash card non sia inserita, ovviamente.
In casi particolari, dove si utilizzano molte unità USB flash, non ci sono molte possibilità di indovinare l'unità giusta: allora non ci resta che assegnare un nome al disco USB ed effettuare un filtro sul campo objDrive.VolumeName.
Nessun commento:
Posta un commento