Hallo zusammen,
bestimmt stehe ich einfach nur auf dem Schlauch - aber mir gelingt es einfach nicht folgendes erfolgreich umzusetzen:
Ich nutze die DynArray.au3 ,um Verzeichnisse zu durchsuchen, wobei einige unter dem Startpunkt liegende Verzeichnisse excluded werden.
Das funktioniert einwandfrei !!!
siehe Code
#include "DynArray.au3"
$a_Ret = _DynArrayFileList("x:\verz", MyFilter, 1)
_ArrayDisplay($a_Ret)
Func MyFilter($s_Path)
Local Static $a_RemoveDirs[] = ["x:\verz\exclude1\","x:\verz\exclude2\","x:\verz\exclude3\","x:\verz\exclude4\","x:\verz\exclude5\"]
For $i in $a_RemoveDirs
_ArrayDisplay($a_RemoveDirs)
If StringLeft($s_Path, StringLen($i)) = $i Then Return False
Next
If StringRight($s_Path, 4) = ".dic" Then Return True
Return False
EndFunc
Alles anzeigen
Um das Ganze auch anderen Kollegen einfach zur Verfügung zu stellen, will ich die anzugebenden Parameter mittels einer cfg Datei hinterlegen und im Code mit Variablen arbeiten.
Die cfg Datei sieht wie folgt aus (eigentlich ganz simpel):
[StartVerzeichnisSuche]
K:\Notesdat\
[ExlcudeDirs]
"x:\Verz\Exclude1\", "x:\Verz\Exclude2\", "x:\Verz\Exclude3\", "x:\Verz\Exclude4\", "x:\Verz\Exclude5\"
[CountSuffix]
4
[SuffixSuche]
.dic
Das funktioniert auch bis auf einen entscheidenden Punkt. Nämlich die Übergabe der zu excludenden Verzeichnisse als Array bekomme ich nicht hin.
Die Exclude Verzeichnisse werden nicht als separate einzelne Records im Array eingelesen, sondern als ein Record des Arrays mit allen Excludes in einem String (dazu siehe auch die 2 Anhänge)
Die Challenge ist es also das (Ziel) Array korrekt zu 'erzeugen' - oder wie erkläre ich ein Trennzeichen, welches das Array versteht un die einzelnen Records erzeugt ?
Danke Euch schon mal im voraus
#include "DynArray.au3"
If FileExists(@ScriptDir & "\RekursivMitExcludedDirs.cfg") Then
Local $cdeStart = FileReadLine(@ScriptDir & "\RekursivMitExcludedDirs.cfg", 2)
Local $cdeExclude = FileReadLine(@ScriptDir & "\RekursivMitExcludedDirs.cfg", 5)
Local $cdeCount = FileReadLine(@ScriptDir & "\RekursivMitExcludedDirs.cfg", 8)
Local $cdeSuffix = FileReadLine(@ScriptDir & "\RekursivMitExcludedDirs.cfg", 11)
Else
MsgBox(64, "Error", "Missing ConfigFile - Check for it !", 2)
EndIf
MsgBox(0,"",$cdeExclude)
$a_Ret = _DynArrayFileList($cdeStart, MyFilter, 1)
_ArrayDisplay($a_Ret)
; Funktion welche nur bei Dateien, welche auf ".dic" enden und welche nicht in x:\verz\exclude1 ... liegen
Func MyFilter($s_Path)
Local Static $a_RemoveDirs[] = [$cdeExclude]
_ArrayDisplay($a_RemoveDirs)
For $i in $a_RemoveDirs
If StringLeft($s_Path, StringLen($i)) = $i Then Return False
Next
If StringRight($s_Path, $cdeCount) = $cdeSuffix Then Return True
Return False
EndFunc
Alles anzeigen