hi,
ich hab ein kleines Problem, ich muss dringend wissen, ob es einen Befehl gibt, der alle Dateien aus einem Ordner und dessen Unterordner in einem Array zurückgibt.
Mit _FileListToArray() hab ich es schon versucht...hoffe das ihr mit helfen könnt
hi,
ich hab ein kleines Problem, ich muss dringend wissen, ob es einen Befehl gibt, der alle Dateien aus einem Ordner und dessen Unterordner in einem Array zurückgibt.
Mit _FileListToArray() hab ich es schon versucht...hoffe das ihr mit helfen könnt
#include<Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $strFF_Ret = '', $strFiles = ''
[/autoit] [autoit][/autoit] [autoit]$ret = _GetFilesFolder_Rekursiv('.', 'au3', 0)
_ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle
; $iDir -1 Dateien+Ordner, 0 nur Dateien, 1 nur Ordner
; Return Value(s): Array mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1)
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Local $aOut
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir)
$aOut = StringSplit(StringTrimRight($strFF_Ret, 1), @LF)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
EndFunc ;==>_GetFilesFolder_Rekursiv
Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1)
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFF_Ret &= $Subfolder.Path & @LF
If ($Dir = -1) Or ($Dir = 0) Then
$files = $Subfolder.Files
For $file In $files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & @LF
Else
$strFiles &= $file.Path & @LF
EndIf
Next
EndIf
$strFF_Ret &= $strFiles
$strFiles = ''
_ShowSubFolders($Subfolder, $Ext, $Dir)
Next
EndFunc ;==>_ShowSubFolders
ok, danke erstmal, aber ich hab das mit dem Pfad nicht ganz verstanden.
$ret = _GetFilesFolder_Rekursiv('.', 'au3', 0) ; Wenn ich als Pfad "C:\Bilder" angebe, bekomme ich immer 0 zurück
Die Frage ist wie sieht C:\Bilder aus.
Mega
Wie genau meinst du das?
Also es ist einfach n Ordner auf der Festplatte mit n paar Bildern drin, hat aber keine Unterordner. Meinst du das?
Kann es sein, dass Du die Parameter nicht richtig interpretierst?
Wenn Du alle Dateien aus dem Ordner "c:\bilder\" haben willst, muss der Aufruf so erfolgen:
[autoit]$ret = _GetFilesFolder_Rekursiv('c:\bilder\', '*', 0)
[/autoit]Mein AUfruf sieht genau aus wie deiner. Ich denke es liegt irgendwie am Pfad oder so.
Ach, ich sehe gerade, dass Xeno die "falsche" (alte) Version gepostet hat. Dort wurden die Dateien im übergebenen Verzeichnis nicht ins Array übernommen.
Hier kannst Du die neue Version downloaden: GetFilesFolder_Rekursiv
Hi,
mach doch mal sowas
[autoit]Global $searchPath = 'c:\Bilder'
[/autoit][autoit][/autoit][autoit]If Not FileExists($searchPath) Then MsgBox(16, 'Error', 'Ähm, ... :-)', 5)
$ret = _GetFilesFolder_Rekursiv($searchPath, '*', 0)
_ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')
Mega
Also es geht leider immer noch nicht und es kommt auch keine Meldung, weil der Ordner nicht existiert.
#include<Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $strFF_Ret = '', $strFiles = ''
Global $searchPath = 'c:\VZ'
If Not FileExists($searchPath) Then MsgBox(16, 'Error', 'Ähm, ... :-)', 5)
$ret = _GetFilesFolder_Rekursiv($searchPath, '*', 0)
_ArrayDisplay($ret, 'Rekursiv alle au3-Dateien')
;==================================================================================================
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle
; $iDir -1 Dateien+Ordner, 0 nur Dateien, 1 nur Ordner
; Return Value(s): Array mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt = '*', $iDir = -1)
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Local $aOut
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath), $sExt, $iDir)
$aOut = StringSplit(StringTrimRight($strFF_Ret, 1), @LF)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
EndFunc ;==>_GetFilesFolder_Rekursiv
Func _ShowSubFolders($Folder, $Ext = '*', $Dir = -1)
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFF_Ret &= $Subfolder.Path & @LF
If ($Dir = -1) Or ($Dir = 0) Then
$files = $Subfolder.Files
For $file In $files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & @LF
Else
$strFiles &= $file.Path & @LF
EndIf
Next
EndIf
$strFF_Ret &= $strFiles
$strFiles = ''
_ShowSubFolders($Subfolder, $Ext, $Dir)
Next
EndFunc ;==>_ShowSubFolders
Diese Version der Funktion ist fehlerhaft!
Hole Dir bitte mal die aktuelle Version (siehe mein vorheriges Posting).
ok, jetzt geht es^^
danke an alle die geholfen haben