Hallo Leute,
vorraussetzung:
- mehr als eine festplatte
da ich nur eine festplatte habe:
ich will testen ob es funktioniert auf mehreren festplatten zu suchen, ich hab das skript mal angehängt und nochmal hier angefügt:
Zu testendes Skript
#include <_Files_list_rekursiv.au3> ;Beinhaltet File.au3 und Array.au3, ist im Archiv dabei
[/autoit] [autoit][/autoit] [autoit]$Festplatten = "C:" & "D:" ;Die Festplatten bitte nicht verändern
$aDateien = _FilesListRekursiv($Festplatten, 2) ;Bitte auch nicht verändern
_FileWriteFromArray(@ScriptDir & "\dateien.txt", $aDateien, 1) ;Kann mit _ArrayDisplay ersetzt werden, wenn ihr keine Datei wollt
;_ArrayDisplay($aDateien) ;Falls ihr das Array anzeigen wollt und keine Datei haben wollt
;Bitte postet mir im Thread ob in der Datei bzw. im Array alle Dateien von C: und D: bei euch aufgelistet sind. Wenn nicht trotzdem sagen das es nicht funktioniert. Danke
[/autoit]_Files_list_rekursiv.au3
;#RequireAdmin
#include-once
#include <File.au3>
#include <Array.au3>
;==============================================================================================================================#
;~ Function Name....: _FilesListRekursiv()
;
;~ Description......: Auflistung von Dateien
;
;~ $_a_Pfad_........: Pfad
;~ $_Set_Runde_.....: '1' ( Standart ) wie oft die Funktion aufgerufen wird ( beispiel C:\ & D:\ durchsuchen auf 2 setzen )
;~ $a_Wildcards_....: '*' ( Standart ) Suchbegrif u. o. Wildcards
;
;~ Return Value(s)..: Array ( Standard ) mit den gefundenen Dateien Array[0] endhält die anzahl ( Fund )
;
;~ Author(s)........: Kleiner27 (http://www.autoit.de) # 27.03.2010 09:00 #
;==============================================================================================================================#
Local $Runde_
Local $a_Pfad_
Local $_x_Files_
Local $_x_Files_Next_
Local $_U_ = 0x00000000
Local $_a_A_Save_[0x000F423F]
Local $_a_Zaehler_ = 0x00000001
Local $_Tren_[0x00000003] = [Chr(0x00000020), Chr(0x0000002A), Chr(0x0000005C)]
Func _FilesListRekursiv($_a_Pfad_, $_Set_Runde_ = True, $a_Wildcards_ = True)
If (StringRight($_a_Pfad_, 0x00000001) <> $_Tren_[0x00000002]) Then $_a_Pfad_ = ($_a_Pfad_ & $_Tren_[0x00000002])
If ($_Set_Runde_ = $_Tren_[0x00000000] Or $_Set_Runde_ = 0x00000000) Then $_Set_Runde_ = (0x00000001)
If ($a_Wildcards_ = $_Tren_[0x00000000]) Then $a_Wildcards_ = ($_Tren_[1])
If ($_U_ < $Runde_) Then ReDim $_a_A_Save_[0x000F423F]
$_U_ += 0x00000001
_ShowFilesRekursiv($_a_Pfad_, $a_Wildcards_)
$Runde_ = ($_U_)
Switch ($Runde_)
Case ($_Set_Runde_)
ReDim $_a_A_Save_[$_a_Zaehler_]
$_a_A_Save_[0x00000000] = ($_a_Zaehler_)
$_a_Zaehler_ = 0x00000001
$_U_ = 0x00000000
Return ($_a_A_Save_)
EndSwitch
Return ($_a_A_Save_)
EndFunc ;==>_FilesListRekursiv
Func _ShowFilesRekursiv($_a_Pfad_, $a_Wildcards_)
$_x_Files_ = FileFindFirstFile($_a_Pfad_ & $a_Wildcards_)
If ($_x_Files_ <> -0x00000001) Then
Do
$_x_Files_Next_ = FileFindNextFile($_x_Files_)
If @error Then ExitLoop
If (@extended = 0x00000001) Then ContinueLoop
$_a_A_Save_[$_a_Zaehler_] = ($_a_Pfad_ & $_x_Files_Next_)
$_a_Zaehler_ += 0x00000001
Until False
FileClose($_x_Files_)
EndIf
Dim $a_Verzeichnis_ = _FileListToArray($_a_Pfad_, $_Tren_[0x00000001], 0x00000002)
For $_i_ = 0x00000001 To UBound($a_Verzeichnis_) - 0x00000001
If (_File_Link_($_a_Pfad_ & $a_Verzeichnis_[$_i_]) = True) Then ContinueLoop
_ShowFilesRekursiv(String($_a_Pfad_ & $a_Verzeichnis_[$_i_] & $_Tren_[0x00000002]), $a_Wildcards_)
Next
EndFunc ;==>_ShowFilesRekursiv
Func _File_Link_($_sF_Link_)
Dim $_a_K_32_ = DllOpen('kernel32.dll')
Dim $_D_Array_ = DllCall($_a_K_32_, 'dword', 'GetFileAttributesW', 'wstr', $_sF_Link_)
If (@error) Then Return SetError(0x00000000, @error, 0x00000000)
Return BitAND($_D_Array_[0x00000000], 0x00000400) = 0x00000400
EndFunc ;==>_File_Link_
Skript wurde angehängt einzelnde .au3 und komplettes archiv.
mfg