[Func] _GetFreeDrive() - Dernière/Première lettre dispo

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[Func] _GetFreeDrive() - Dernière/Première lettre dispo

#1

Message par Tlem »

Pour un projet en cours, j'ai eu besoin d'obtenir la dernière lettre de lecteur disponible sur un système.
Afin de rendre la fonction un peut plus complète, j'y ai adjoint deux paramètres :
  • Le premier permet d'interdire certaines lettres de lecteurs.
  • Le second permet d'obtenir la première lettre de lecteur disponible (au lieu de la dernière).
Voici la fonction :

Code : Tout sélectionner

; #FUNCTION# ================================================================================================
; Name...........: _GetFreeDrive()
; Description ...: Return the last or the first available drive letter
; Syntax.........: _GetFreeDrive([$szReserved, [$iWay]])
; Parameters ....: $szReserved          - Drive's letter that you don't want to use
;                  $iWay                - 0 | Last drive's letter
;                                         1 | First drive's letter
;
; Return values .: Success - Return the last or the first free drive letter
;                  Failure - Return "" and sets @error:
;                  |1 - There is no available letter
;
; Author ........: Tlem (tlem@@tuxolem.fr)
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......:
; ===========================================================================================================
Func _GetFreeDrive($szReserved = "", $iWay = 0)
    Local $sDrive, $sDriveList, $aDrive, $aUsedDrives
    If $iWay = 1 Then ; First drive's letter
        $sDriveList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Else ; Last drive's letter
        $sDriveList = "ZYXWVUTSRQPONMLKJIHGFEDCBA"
    EndIf

    ; Create an array of drives's letters
    $aDrive = StringSplit($sDriveList, "")

    ; Get all Drives used by system
    $aUsedDrives = DriveGetDrive("ALL")
    ; Convert result in string of letters only
    For $i = 1 To UBound($aUsedDrives) - 1
        $sDrive = $sDrive & StringTrimRight($aUsedDrives[$i], 1)
    Next

    ; Reverse Check of last unused drive letter
    For $i = 1 To UBound($aDrive) - 1
        If Not StringInStr($sDrive & $szReserved, $aDrive[$i]) Then
            Return $aDrive[$i]
        EndIf
    Next
    ; If we are here, all the drive's lettres are used !!!
    Return SetError(1, 0, "")
EndFunc   ;==>_GetFreeDrive
Et un petit exemple :

Code : Tout sélectionner

MsgBox(64, "_GetFreeDrive", "Dernière lettre de lecteur disponible : " & _GetFreeDrive("VWXYZ") & @TAB)
MsgBox(64, "_GetFreeDrive", "Première lettre de lecteur disponible : " & _GetFreeDrive("AB", 1) & @TAB)
.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
filou87
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 04 janv. 2010 19:36
Status : Hors ligne

Re: [Func] _GetFreeDrive() - Dernière/Première lettre dispo

#2

Message par filou87 »

Bonjour,

Moi je le faisais à la brute à partir de la lettre "o"... :wink:

Je prends.
Merci.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] _GetFreeDrive() - Dernière/Première lettre dispo

#3

Message par Tlem »

Bonsoir. J'ai édité votre message pour supprimer le code joint, car celui-ci ne présentait aucun intérêt dans ce sujet. En effet, le sujet traite de la première ou dernière lettre de lecteur disponible et non d'un script de connexion vers un partage. Merci quand même de votre intérêt pour le sujet.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
filou87
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 04 janv. 2010 19:36
Status : Hors ligne

Re: [Func] _GetFreeDrive() - Dernière/Première lettre dispo

#4

Message par filou87 »

Bonsoir,

L'idée était d'obtenir la dernière lettre de lecteur disponible sur un système pour executer un net use ...
Votre code intégré dans mon script me semble ,comme je le disais , plus propre.
Encoe merci de ce partage.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [Func] _GetFreeDrive() - Dernière/Première lettre dispo

#5

Message par DimVar »

Ca va me servir.
Merci bien.
► Afficher le texte
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] _GetFreeDrive() - Dernière/Première lettre dispo

#6

Message par Tlem »

Corrigé.

Il faut que j’arrête la pierre ... :oops:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre