Wärend des scannens soll noch ein Progressbar rein.
Wie wende ich denn recursive an, dass wirklich alle Unterverzeichnisse erfasst werden? Darüber finde ich in der Hilfe nichts.
Beim speichern der Text Datei wird immer nur die letze Datei des ersten Ordner als Text hineingespeichert. Nicht der komplette Ordnerinhalt

NACHTRAG:
inzwischen habe ich alles so weit fertig dass es mir die Text Datei mit Unterverzeichnisse erstellt.
jetzt noch die Checkboxen Aktivieren und einen Progressbar rein.
CODE AKTUALISIERT (dickes Danke auch an Bisonte)
PureBasic v5.43 LTS - Compiler Option hab ich eingestellt: Create Unicode executable
Code: Alles auswählen
EnableExplicit
;{ Enumeration Section
Enumeration Windows
#Window_0
EndEnumeration
Enumeration Gadgets
#Button_Start
#String_Path
#Button_Ordner
#CheckBox_srt
#CheckBox_jpg
#CheckBox_bmp
#CheckBox_mp3
#LineTopEdFrame
#LineLeftEdFrame
#LineRightEdFrame
#LineBottomEdFrame
#Gadget_LineLeftEdFrame
#Gadget_LineRightEdFrame
#Gadget_LineBottomEdFrame
#Gadget_LineTopEdFrame
#Frame_Text
#Frame3D
#CheckBox_Custom
#String_Custom
#Inhalt_txt
#Container_CheckboxenUSW
#Header
#Exit_btn
#Gadget_exit
#CheckBox_srt_Text
#CheckBox_jpg_Text
#CheckBox_bmp_Text
#CheckBox_mp3_Text
#Img_Fat_Line
#Fat_Line
#Triangle
#Gadget_Triangle
#Img_Footer
#Footer
#Triangle_Button
#Gadget_Triangle_Button
#LineTop
#LineLeft
#LineRight
#LineBottom
#Gadget_LineTop
#Gadget_LineLeft
#Gadget_LineRight
#Gadget_LineBottom
#Footer_Text
EndEnumeration
Enumeration Fonts
#Font1
#Font2
#Font3
#PB_Atny
EndEnumeration
;}
Global Path$, File2$, InitialPath$, Dir$, File$, font$
Define.i Event, EventWindow, EventGadget, EventType, EventMenu, Start, Stop
Define NewList Files.s()
Define NewList Clean.s()
LoadFont(#Font1, "Microsoft Sans Serif", 9, #PB_Font_HighQuality)
LoadFont(#Font2, "Microsoft Sans Serif", 12, #PB_Font_HighQuality)
Procedure IncTextGadget(Gadget, x, y, Width, Height, Text$, Flags, FColor.l = -1, BColor.l = -1, FontID = 0)
Protected ID
ID = TextGadget(Gadget, x, y, Width, Height, Text$, Flags)
If Gadget = #PB_Any : Gadget = ID : EndIf
If FColor > -1
SetGadgetColor(Gadget, #PB_Gadget_FrontColor, FColor)
EndIf
If BColor > -1
SetGadgetColor(Gadget, #PB_Gadget_BackColor, BColor)
EndIf
If FontID <> 0
SetGadgetFont(Gadget, FontID)
EndIf
ProcedureReturn ID
EndProcedure
Procedure ExamDir(Directory.s, List Files.s())
Protected Dir, Name.s
If Right(Directory, 1) <> "\" : Directory + "\" : EndIf ; add Backslash if no one exist
Dir = ExamineDirectory(#PB_Any, Directory, "")
If Dir
While NextDirectoryEntry(Dir)
Name = DirectoryEntryName(Dir)
If DirectoryEntryType(Dir) = #PB_DirectoryEntry_Directory
If Name <> "." And Name <> ".."
ExamDir(Directory + Name, Files())
EndIf
Else
AddElement(Files()) ; create a new listElement
Files() = Directory + Name
EndIf
While WindowEvent() : Wend
Wend
FinishDirectory(Dir)
EndIf
EndProcedure
Procedure WriteDirText(File.s, List Files.s())
Protected A
Protected txt$
txt$ = FormatDate("%dd.%mm.%yyyy um %hh:%ii:%ss", Date())
If ListSize(Files()) > 0 ; is there something in the list?
A = CreateFile(#PB_Any, File)
If a
WriteStringN(A, "")
WriteStringN(A, "Folder2Text-Tool by udg aka inc in 2016")
WriteStringN(A, LSet("", 63, "-"))
WriteStringN(A, "Übersicht der eingelesenen Ordner vom " + txt$)
WriteStringN(A, "")
WriteStringN(A, LSet("", 63, "-"))
WriteStringN(A, "")
WriteStringN(A, "")
ForEach Files()
WriteStringN(A, Files())
Next
CloseFile(A)
SetGadgetText(#Button_Start, "Text Datei gespeichert")
EndIf
EndIf
EndProcedure
Procedure RemoveFromList(List Files.s(), List Clean.s(), Extension.s)
ForEach Files()
If LCase(GetExtensionPart(Files())) <> LCase(Extension)
AddElement(Clean())
Clean() = Files()
EndIf
Next
EndProcedure
Procedure StringGadgetVCenter(GadgetID)
Protected hwndEdit
Protected LineCount
Protected hdc
Protected fsz.SIZE
Protected eRect.RECT
hwndEdit = GadgetID(GadgetID)
LineCount = SendMessage_(hwndEdit,#EM_GETLINECOUNT, 0, 0)
hdc = GetDC_(hwndEdit)
SelectObject_(hdc,GetGadgetFont(GadgetID))
GetTextExtentPoint32_(hdc,"ABC",3,fsz.SIZE)
ReleaseDC_(hwndEdit,hdc)
GetClientRect_(hwndEdit,eRect.RECT)
eRect\top = (GadgetHeight(GadgetID) - fsz\cy * LineCount) / 2
eRect\bottom = eRect\top + (fsz\cy * LineCount) + 4
If eRect\bottom < GadgetHeight(GadgetID)
SendMessage_(hwndEdit,#EM_SETRECT,0,eRect)
EndIf
EndProcedure
Procedure OpenWindow_Window_0()
Protected FColor
Protected BColor
If OpenWindow(#Window_0, 965, 377, 415, 450, "", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Invisible)
SetWindowColor(0, RGB(128, 128, 128))
SetClassLongPtr_(WindowID(0), #GCL_STYLE, #CS_DROPSHADOW)
;1px FRAME TOOL EDGES
;LineLeft
CreateImage(#LineTop,415,1,32,RGB(40,40,40))
StartDrawing(ImageOutput(#LineTop))
StopDrawing()
;LineLeft
CreateImage(#LineLeft,1,450,32,RGB(40,40,40))
StartDrawing(ImageOutput(#LineLeft))
StopDrawing()
;LineRight
CreateImage(#LineRight,1,450,32,RGB(40,40,40))
StartDrawing(ImageOutput(#LineRight))
StopDrawing()
;LineBottom
CreateImage(#LineBottom,415,1,32,RGB(145, 30, 135))
StartDrawing(ImageOutput(#LineBottom))
StopDrawing()
ImageGadget(#Gadget_LineTop,0,0,1,415,ImageID(#LineTop))
ImageGadget(#Gadget_LineLeft,0,0,1,500,ImageID(#LineLeft))
ImageGadget(#Gadget_LineRight,414,0,1,500,ImageID(#LineRight))
ImageGadget(#Gadget_LineBottom,1,449,415,1,ImageID(#LineBottom))
;HEADER
IncTextGadget(#Header, 0, 0, 355, 61, " Ordnerinhalt in TXT Datei schreiben", #SS_CENTERIMAGE, RGB(187, 187, 187), RGB(40,40,40), FontID(#Font2))
;HEADER BORDER BOTTOM
CreateImage(#Img_Fat_Line, 414, 5)
StartDrawing(ImageOutput(#Img_Fat_Line))
Box(0,0,OutputWidth(),OutputHeight(),RGB(40,40,40))
StopDrawing()
ImageGadget(#Fat_Line, 1, 61, 0, 0, ImageID(#Img_Fat_Line))
DisableGadget(#Fat_Line, #True)
;TRIANGLE
CreateImage(#Triangle,394,11,32,RGB(128, 128, 128))
StartDrawing(ImageOutput(#Triangle))
;LINE LEFT
LineXY(0, 0, 10, 10, RGB(40, 40, 40))
;LINE RIGHT
LineXY(10, 10, 20, 0, RGB(40, 40, 40))
;PINK LINE RIGHT
LineXY(11, 11, 21, 0, RGB(145, 30, 134))
LineXY(0, 0, 394, 0, RGB(145, 30, 134))
;LINE TOP
LineXY(0, 0, 20, 0, RGB(40, 40, 40))
FillArea(3, 2, RGB(40, 40, 40), RGB(40, 40, 40))
StopDrawing()
ImageGadget(#Gadget_Triangle,20,66,39,394,ImageID(#Triangle))
;EXIT BUTTON
CreateImage(#Exit_btn,60,61)
StartDrawing(ImageOutput(#Exit_btn))
FillArea(1,1,-1,RGB(40, 40, 40))
Line(3,56,54,-54,RGB(208, 208, 208))
Line(3,4,54,54,RGB(208, 208, 208))
StopDrawing()
ImageGadget(#Gadget_exit,WindowWidth(0)-60,0,60,60,ImageID(#Exit_btn))
ContainerGadget(#Container_CheckboxenUSW, 24, 80, 380, 324, #PB_Container_BorderLess)
SetGadgetColor(#Container_CheckboxenUSW, #PB_Gadget_BackColor, RGB(128, 128, 128))
;FRAME AROUND THE CHECKBOXES
;LineTop
CreateImage(#LineTopEdFrame,371,1,32,RGB(102, 102, 102))
StartDrawing(ImageOutput(#LineTopEdFrame))
StopDrawing()
;LineLeftEdFrame
CreateImage(#LineLeftEdFrame,1,40,32,RGB(102, 102, 102))
StartDrawing(ImageOutput(#LineLeftEdFrame))
StopDrawing()
;LineRightEdFrame
CreateImage(#LineRightEdFrame,1,40,32,RGB(102, 102, 102))
StartDrawing(ImageOutput(#LineRightEdFrame))
StopDrawing()
;LineBottomEdFrame
CreateImage(#LineBottomEdFrame,370,1,32,RGB(102, 102, 102))
StartDrawing(ImageOutput(#LineBottomEdFrame))
StopDrawing()
CheckBoxGadget(#CheckBox_srt, 10, 35, 13, 13, "")
IncTextGadget(#CheckBox_srt_Text, 26, 32, 25, 16, "srt", 0, -1, RGB(128, 128, 128), FontID(#Font1))
CheckBoxGadget(#CheckBox_jpg, 55, 35, 13, 13, "")
IncTextGadget(#CheckBox_jpg_Text, 71, 32, 25, 16, "jpg", 0, -1, RGB(128, 128, 128), FontID(#Font1))
CheckBoxGadget(#CheckBox_bmp, 100, 35, 13, 13, "")
IncTextGadget(#CheckBox_bmp_Text, 117, 32, 27, 16, "bmp", 0, -1, RGB(128, 128, 128), FontID(#Font1))
CheckBoxGadget(#CheckBox_mp3, 147, 35, 13, 13, "")
IncTextGadget(#CheckBox_mp3_Text, 163, 32, 27, 16, "mp3", 0, -1, RGB(128, 128, 128), FontID(#Font1))
CheckBoxGadget(#CheckBox_Custom, 234, 35, 13, 13, "")
StringGadget(#String_Custom, 250, 32, 105, 18, "Endung angeben", #PB_String_BorderLess|#ES_MULTILINE|#SS_CENTER)
SetGadgetFont(#String_Custom, FontID(#Font1))
StringGadgetVCenter(#String_Custom)
SetGadgetColor(#String_Custom, #PB_Gadget_FrontColor, RGB(136, 136, 136))
;OPEN PATH BUTTON
IncTextGadget(#Button_Ordner, 0, 100, 367, 30, "Ordner/ Verzeichnis wählen", #SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER, RGB(40, 40, 40), RGB(177, 177, 177), FontID(#Font2))
;SHOW PATH
StringGadget(#String_Path, 0, 148, 367, 35, "", #PB_String_BorderLess|#ES_MULTILINE|#SS_CENTER)
SetGadgetFont(#String_Path, FontID(#Font1))
StringGadgetVCenter(#String_Path)
;START BUTTON
IncTextGadget(#Button_Start, 0, 290, 367, 30, "Starten", #SS_CENTERIMAGE|#SS_NOTIFY|#SS_CENTER, RGB(40, 40, 40), RGB(177, 177, 177), FontID(#Font2))
CloseGadgetList()
;TRIANGLE BOTTOM - START BUTTON
CreateImage(#Triangle_Button,30,14,32,RGB(128, 128, 128))
StartDrawing(ImageOutput(#Triangle_Button))
;DARK LINE LEFT
LineXY(1, 0, 13, 12, RGB(16, 16, 16))
;LINE LEFT
LineXY(3, 0, 13, 10, RGB(177, 177, 177))
;LINE RIGHT
LineXY(13, 10, 23, 0, RGB(177, 177, 177))
;Dark LINE RIGHT
LineXY(14, 11, 25, 0, RGB(16, 16, 16))
;LINE TOP
LineXY(3, 0, 23, 0, RGB(177, 177, 177))
FillArea(6, 2, RGB(177, 177, 177), RGB(177, 177, 177))
StopDrawing()
ImageGadget(#Gadget_Triangle_Button,192,210,39,30,ImageID(#Triangle_Button))
;DRAW 1px FRAME AROUND THE CHECKBOXES
ImageGadget(#Gadget_LineTopEdFrame,22,100,1,1,ImageID(#LineTopEdFrame))
ImageGadget(#Gadget_LineLeftEdFrame,22,101,1,101,ImageID(#LineLeftEdFrame))
ImageGadget(#Gadget_LineRightEdFrame,392,101,1,101,ImageID(#LineRightEdFrame))
ImageGadget(#Gadget_LineBottomEdFrame,23,140,1,101,ImageID(#LineBottomEdFrame))
IncTextGadget(#Frame_Text, 30, 90, 180, 16, " ignoriere folgende Datei Typen:", 0, RGB(217, 217, 217), RGB(128, 128, 128), FontID(#Font1))
;FOOTER
CreateImage(#Img_Footer, 450, 30)
StartDrawing(ImageOutput(#Img_Footer))
Box(0,0,OutputWidth(),OutputHeight(),RGB(40,40,40))
StopDrawing()
ImageGadget(#Footer, 0, WindowHeight(0) - 31, 0, 0, ImageID(#Img_Footer)) : DisableGadget(#Footer, #True)
;FOOTER TEXT
IncTextGadget(#Footer_Text, 95, 423, 220, 20, "coding by unknown design group 2k16", #SS_CENTERIMAGE|#SS_CENTER, RGB(95, 95, 95), RGB(40,40,40), FontID(#Font1))
HideWindow(#Window_0, #False)
Else
End
EndIf
EndProcedure
OpenWindow_Window_0()
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
Select EventGadget()
;AUTOHIGHLIGHT TEXT IN STRINGGADGET onCLICK
Case #String_Custom
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
SetGadgetColor(#String_Custom, #PB_Gadget_FrontColor, RGB(40,40,40))
EndIf
Case #Button_Ordner
SetGadgetText(#Button_Start, "Starten")
InitialPath$ = "C:\"
Dir$ = PathRequester("Bitte Pfad auswählen", InitialPath$)
If Dir$
SetGadgetText(#String_Path, Dir$)
EndIf
Case #Button_Start
;CALL SAVE FILE REQUESTER
File$=SaveFileRequester("Info Datei speichern", "C:\info.txt ", "TXT FILE(*.txt)|*.txt", 0)
If File$ <> "" And Dir$ <> ""
If Right(Dir$,1)<>"\":Dir$+"\":EndIf
ClearList(Files())
ClearList(Clean())
ExamDir(Dir$, Files())
If GetGadgetState(#CheckBox_bmp)
RemoveFromList(Files(), Clean(), "bmp")
ClearList(Files()) : CopyList(Clean(), Files()) : ClearList(Clean())
EndIf
If GetGadgetState(#CheckBox_jpg)
RemoveFromList(Files(), Clean(), "jpg")
ClearList(Files()) : CopyList(Clean(), Files()) : ClearList(Clean())
EndIf
If GetGadgetState(#CheckBox_mp3)
RemoveFromList(Files(), Clean(), "mp3")
ClearList(Files()) : CopyList(Clean(), Files()) : ClearList(Clean())
EndIf
If GetGadgetState(#CheckBox_srt)
RemoveFromList(Files(), Clean(), "srt")
ClearList(Files()) : CopyList(Clean(), Files()) : ClearList(Clean())
EndIf
If GetGadgetState(#CheckBox_Custom)
RemoveFromList(Files(), Clean(), GetGadgetText(#String_Custom))
ClearList(Files()) : CopyList(Clean(), Files()) : ClearList(Clean())
EndIf
WriteDirText(File$, Files())
EndIf
Case #Gadget_exit
End
EndSelect
;DRAG TOOL WITH MOUSE
Case #WM_LBUTTONDOWN
If WindowMouseX(#Window_0) >= 0 And WindowMouseX(#Window_0) <= 355 And WindowMouseY(#Window_0) >= 0 And WindowMouseY(#Window_0) <= 61
SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
EndSelect
ForEver