- Offizieller Beitrag
Hi,
ich nehme an, bei euch sieht es ähnlich aus:
Immer mehrere USB-Sticks angestöpselt, davon sind welche identisches Fabrikat und bekommen deshalb auch keine festen Laufwerksbuchstaben, sondern mal hat der eine G:, dann der andere.
Um nun nicht immer zu gucken, welche Laufwerksnummern belegt und dann nach einem Ordner zu suchen, habe ich diese Funktion erstellt. Es wird der Pfad ohne Laufwerk angegeben. Die Funktion sucht in allen Laufwerken auf Existenz dieses Pfades und prüft auf Schreibrechte (Read-Only oder nicht), standardmäßig beschreibbar. Wobei mir aufgefallen ist, dass das Setzen von Read-Only per Skript erfolgen muss - im Explorer lassen sich nur die Rechte für die enthaltenen Dateien setzen.
Die Funktion gibt die vollen Pfade von allen Treffern zurück.
Vielleicht könnt ihr es brauchen.
; #FUNCTION# ====================================================================================================================
; Name ..........: _DriveGetFolderExists
; Description ...: Searches a given path on all drives. You can search for writable (default) or read-only pathes.
; Syntax ........: _DriveGetFolderExists($sFolder[, $bWriteable = True])
; Parameters ....: $sFolder - Folder path without drive.
; $bWriteable - [optional] Searched path is (not) writeable. Default is True.
; Return values .: Success Array with full pathes of all matches. Count of matches in $array[0]
; Failure @error=1, $array[0]=0 - no matches
; Author ........: BugFix
; ===============================================================================================================================
Func _DriveGetFolderExists($sFolder, $bWriteable=True)
Local $aD = DriveGetDrive('all')
Local $aExists[$aD[0]+1] = [0]
Local $sPath, $iErr = 0
$sFolder = StringRegExpReplace($sFolder, '^(\\+)|(\\+)$', '')
For $i = 1 To $aD[0]
$sPath = StringFormat('%s\%s', $aD[$i], $sFolder)
If FileExists($sPath) And ((StringInStr(FileGetAttrib($sPath), 'R') = 0) = $bWriteable) Then
$aExists[0] += 1
$aExists[$aExists[0]] = $sPath
EndIf
Next
ReDim $aExists[$aExists[0]+1]
If $aExists[0] = 0 Then $iErr = 1
Return SetError($iErr,0,$aExists)
EndFunc ;==>_DriveGetFolderExists
Alles anzeigen