hi könnte jemand mir helfen ich würde gernemit filefindfirstfile, filefindnextfile und filegetatributes schaun welche ordner in einem ordner vorhanden sind und mir die dann ausgeben lassen, jeden ordner in einer eigenen variable
jedoch weis ich nciht wie ich das machen soll
mfg p3aNut
ordner auslesen?
-
p3aNut -
13. Juli 2006 um 13:24 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Hallo,
hier ein kleines Programm als denkanstoss:
Code
Alles anzeigenIf @AutoItVersion < "3.1.1.128" Then MsgBox(0, "Falsche Version", "Das Programm benötigt mindestens AutoIt-Version 3.1.1.128 beta!") Exit EndIf ; Variable die die Namen der Verzeichnisse speichert Dim $strDirNames[1] ; Startverzeichnis wählen $StartFolder = FileSelectFolder("Startverzeichnis wählen", "") $h_search = FileFindFirstFile($StartFolder & "*.*") If $h_search = -1 Then MsgBox(0, "Fehler", "Datei/Verzeichnis nicht gefunden!") Exit EndIf ; Einlesen $index = 1 While 1 $strName = FileFindNextFile($h_search) If @error Then ExitLoop If StringInStr(FileGetAttrib($StartFolder & $strName),"D") Then If UBound($strDirNames) < $index then ReDim $strDirNames[$index] $strDirNames[$index-1] = $strName $index += 1 EndIf WEnd ; Ausgabe $Ausgabe = UBound($strDirNames) & " Verzeichnis(se) gefunden!" & @CRLF & @CRLF For $index = 0 To UBound($strDirNames) - 1 $Ausgabe &= $strDirNames[$index] & @CRLF Next MsgBox(0,"",$Ausgabe)
-
ich bin mir nicht ganz sicher aber ich glaube deine @AutoItVersion anweisung funktioniert nicht richtig weil es keine Zahl ist bzw immer mit "." getrennt wurde
falls doch dann ist dieser post sinnlos
-
- Offizieller Beitrag
Hi,
also ich würde ihn dann für sinnlos einstufen. :lol:
So long,
Mega
-
- Offizieller Beitrag
-
- Offizieller Beitrag
@Mirage: Ich nehme an, dass größer/kleiner-Vergleich bei Strings über den ASCII-Code des Zeichens laufen. Dann würde es gehen, weil Zahlen dort in der richtigen Reihenfolge hintereinander stehen.
Bernd: Genaue Versionsabfrage finde ich übertrieben. Vielleicht lieber mit StringInStr auf "Beta" prüfen.peethebee
-
- Offizieller Beitrag
@Mirage, es geht so wie ich es gemacht habe, ich habs vorher getestet
@pee, dafür müsste dann aber auch "beta" von @AutoItVersion zurückgegeben werden! :tier:
Kommentar peethebee: Sorry, Denkfehler von mir. -
danke euch allen für die hilfreichen ansätze, und das mit der versions abfrage hat nach einem autoit update auch geklappt :schild4:
zu dem post von meger, da ich mich mit arrays noch nicht auskenne, wie kann ich jeden einzelnen ordner in einem dropdown menu anzeigen lassen, wie ich ein dropdown mache weis ich nur wie ich jeden ordner in einer var oder so speichere weis ich nicht
-
- Offizieller Beitrag
Hi,
quick and dirty :
Spoiler anzeigen
C
Alles anzeigen#Include <File.au3> #Include <Array.au3> #include <GUIConstants.au3> GUICreate("My GUI", 600, 600, 5, 5) GuiCtrlCreateLabel("Path : ", 5, 5, 80, 20) $path_I = GUICtrlCreateInput("c:\" , 55, 5, 300, 20) $run_B = GUICtrlCreateButton("Run" , 500, 5, 80, 20) $folder_C = GUICtrlCreateCombo("The Combo" , 5, 45, 570, 550) GUISetState (@SW_SHOW) ; will display an empty dialog box ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $run_B Then Local $file_A = _fileList(GUICtrlRead($path_I), "*.*", 2) Local $a_A = _ArrayToString($file_A, "|") GUICtrlSetData($folder_C, $a_A) EndIf Wend Func _fileList($s_path = "c:\", $s_pattern = "*.*", $i_opt = 0) Local $result = _FileListToArray($s_path, $s_pattern, $i_opt) If (Not IsArray($result)) and (@error = 1) Then MsgBox(0, "", "No Folders Found.") Exit EndIf Return $result EndFunc ;==>_fileList
So long,
Mega
-
wow thx =)
gibt es noch eine möglichkeit das bestimmte ordner nicht agezeigt werden? -
- Offizieller Beitrag
Hi,
hmmh nächster schneller Versuch:
Spoiler anzeigen
C
Alles anzeigen#Include <File.au3> #Include <Array.au3> #include <GUIConstants.au3> Global $not_A[3] = ['', "Programme", "Winnt"] GUICreate("My GUI", 600, 600, 5, 5) GUICtrlCreateLabel("Path : ", 5, 5, 80, 20) $path_I = GUICtrlCreateInput("c:\", 55, 5, 300, 20) $run_B = GUICtrlCreateButton("Run", 500, 5, 80, 20) $folder_C = GUICtrlCreateCombo("Folders", 5, 45, 570, 550) GUISetState(@SW_SHOW) ; will display an empty dialog box ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $run_B Then Local $file_A = _fileList(GUICtrlRead($path_I), "*.*", 2) $file_A = _ShowNotFolder($file_A) Local $a_A = _ArrayToString($file_A, "|") GUICtrlSetData($folder_C, $a_A) EndIf WEnd Func _fileList($s_path = "c:\", $s_pattern = "*.*", $i_opt = 0) Local $result = _FileListToArray($s_path, $s_pattern, $i_opt) If (Not IsArray($result)) and (@error = 1) Then MsgBox(0, "", "No Folders Found.") Exit EndIf Return $result EndFunc ;==>_fileList Func _ShowNotFolder($file_A) For $i = 1 To UBound($file_A) - 2 For $y = 1 To UBound($not_A) - 1 If $file_A[$i] = $not_A[$y] Then _ArrayDelete($file_A, $i) $file_A[0] = UBound($file_A) - 1 EndIf Next Next Return $file_A EndFunc ;==>_ShowNotFolder
So long,
Mega