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