Hallo Leute!
Ich Poste meine Rekursiv werke ( Datein / Verzeichnise / Reg ) Listen!
Vieleicht Kann sie wehr gebrauchen u. o einer hat noch vorschläge Ideen Erweiterungen!
_Files_list_Rekursiv
Spoiler anzeigen
;#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)]
Dim $iTimer = TimerInit()
Dim $d = _FilesListRekursiv('E:', 0, '*')
_ArrayDisplay($d, TimerDiff($iTimer))
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_
_Folder_list_Rekursiv
Spoiler anzeigen
;#RequireAdmin
#include-once
#include <File.au3>
#include <Array.au3>
;==============================================================================================================================#
;~ Function Name....: _FolderListRekursiv()
;
;~ Description......: Auflistung von Verzeichnise
;
;~ $_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 $stringSplit
Local $_U_ = 0x00000000
Local $_a_A_Save_[0x000F423F]
Local $_a_Zaehler_ = 0x00000001
Local $_Tren_[0x00000004] = [Chr(0x00000020), Chr(0x0000002A), Chr(0x0000005C), Chr(46)]
Dim $iTimer = TimerInit()
Dim $d = _FolderListRekursiv('D:', 0, '*')
_ArrayDisplay($d, TimerDiff($iTimer))
Func _FolderListRekursiv($_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
_ShowFolderRekursiv($_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 ;==>_FolderListRekursiv
Func _ShowFolderRekursiv($_a_Pfad_, $a_Wildcards_)
If ($a_Wildcards_ <> $_Tren_[0x00000001]) Then
$stringSplit = StringSplit($_a_Pfad_, $_Tren_[0x00000002])
If (StringReplace(StringReplace($a_Wildcards_, $_Tren_[0x00000001], $_Tren_[0x00000000]), $_Tren_[0x00000003], $_Tren_[0x00000000]) = $stringSplit[UBound($stringSplit) - 2]) Then
$_a_A_Save_[$_a_Zaehler_] = ($_a_Pfad_)
$_a_Zaehler_ += 0x00000001
EndIf
Else
$_a_A_Save_[$_a_Zaehler_] = ($_a_Pfad_)
$_a_Zaehler_ += 0x00000001
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
_ShowFolderRekursiv(String($_a_Pfad_ & $a_Verzeichnis_[$_i_] & $_Tren_[0x00000002]), $a_Wildcards_)
Next
EndFunc ;==>_ShowFolderRekursiv
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_
_Files_list_Rekursiv_Dubell
Spoiler anzeigen
;#RequireAdmin
#include-once
#include <Array.au3>
#include <File.au3>
#include <String.au3>
;==============================================================================================================================#
;~ Function Name....: _File_List_Dubell()
;
;~ 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 $_U_
Local $Runde_
Local $_a_S_Save_
Local $_a_X_File_
Local $_a_X_File_Next_
Local $_0_ = 0x00000000
Local $_1_ = 0x00000000
Local $_a_A_ArraySave_[0x000F423F][0x0000002]
Local $_a_B_ArraySave_[0x000F423F][0x0000002]
Local $_a_Tren_[0x00000004] = [Chr(0x00000020), Chr(0x0000002A), Chr(0x0000005C), Chr(0x0000007C)]
Dim $iTimer = TimerInit()
Dim $F = _File_List_Dubell('D:', 0, '*')
_ArrayDisplay($F, TimerDiff($iTimer))
Func _File_List_Dubell($a_Pfad_, $_Set_Runde_ = True, $a_Wildcards_ = True)
If (StringRight($a_Pfad_, 0x00000001) <> $_a_Tren_[0x00000002]) Then $a_Pfad_ = ($a_Pfad_ & $_a_Tren_[0x00000002])
If ($_Set_Runde_ = $_a_Tren_[0x00000000] Or $_Set_Runde_ = 0x00000000) Then $_Set_Runde_ = (0x00000001)
If ($a_Wildcards_ = $_a_Tren_[0x00000000]) Then $a_Wildcards_ = ($_a_Tren_[1])
If ($_U_ < $Runde_) Then
ReDim $_a_B_ArraySave_[0x000F423F][0x00000002]
ReDim $_a_A_ArraySave_[0x000F423F][0x00000002]
EndIf
$_U_ += 0x00000001
_Show_Dubell_($a_Pfad_, $a_Wildcards_)
If ($_0_ = 0x00000000) Then Return SetError(0x00000002, 0x00000000, $_a_Tren_[0x00000000])
$Runde_ = ($_U_)
Switch ($Runde_)
Case ($_Set_Runde_)
ReDim $_a_A_ArraySave_[$_0_][0x00000002]
_ArraySort($_a_A_ArraySave_, 0x00000000, 0x00000000, 0x00000000, 0x00000000)
_Dubell_List_($_a_A_ArraySave_, $_0_)
If ($_1_ = 0x00000000) Then Return SetError(0x00000002, 0x00000000, $_a_Tren_[0x00000000])
ReDim $_a_B_ArraySave_[$_1_][0x00000002]
$_0_ = 0x00000000
$_1_ = 0x00000000
Return ($_a_B_ArraySave_)
EndSwitch
Return ($_a_B_ArraySave_)
EndFunc ;==>_File_List_Dubell
Func _Show_Dubell_($a_Pfad_, $a_Wildcards_)
$_a_X_File_ = FileFindFirstFile($a_Pfad_ & $a_Wildcards_)
If ($_a_X_File_ <> -0x00000001) Then
Do
$_a_X_File_Next_ = FileFindNextFile($_a_X_File_)
If (@error) Then ExitLoop
If (@extended = 0x00000001) Then ContinueLoop
$_a_A_ArraySave_[$_0_][0x00000000] = ($_a_X_File_Next_)
$_a_A_ArraySave_[$_0_][0x00000001] = ($a_Pfad_ & $_a_X_File_Next_)
$_0_ += 0x00000001
Until False
FileClose($_a_X_File_)
EndIf
Dim $a_Verzeichnis_ = _FileListToArray($a_Pfad_, $_a_Tren_[0x00000001], 0x00000002)
For $_i_ = 0x00000001 To UBound($a_Verzeichnis_) - 0x00000001
If (_File_Link_($a_Pfad_ & $a_Verzeichnis_[$_i_]) = True) Then ContinueLoop
_Show_Dubell_(String($a_Pfad_ & $a_Verzeichnis_[$_i_] & $_a_Tren_[0x00000002]), $a_Wildcards_)
Next
EndFunc ;==>_Show_Dubell_
Func _Dubell_List_($_a_C_ArraySave_, $_0_)
For $_i_ = 0x00000000 To $_0_ - 0x00000001
$_a_S_Save_ = $_a_Tren_[0x00000000]
For $_e_ = $_i_ To $_0_ - 0x00000001
If ($_a_C_ArraySave_[$_e_][0x00000000] <> $_a_C_ArraySave_[$_i_][0x00000000]) Then ExitLoop
$_a_S_Save_ &= ($_a_C_ArraySave_[$_e_][0x00000001] & $_a_Tren_[0x00000003])
Next
If ($_e_ - $_i_ < 0x00000002) Then ContinueLoop
$_a_B_ArraySave_[$_1_][0x00000000] = ($_a_C_ArraySave_[$_i_][0x00000000])
$_a_B_ArraySave_[$_1_][0x00000001] = (StringTrimRight($_a_S_Save_, 0x00000001))
$_i_ += ($_e_ - $_i_ - 0x00000001)
$_1_ += 0x00000001
Next
EndFunc ;==>_Dubell_List_
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_
_Files_list_Rekursiv_Hash_Dubell
Spoiler anzeigen
;#RequireAdmin
#include-once
#include <Array.au3>
#include <Crypt.au3>
#include <File.au3>
;==============================================================================================================================#
;~ Function Name....: _File_List_Hash_Dubell()
;
;~ 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 $_U_
Local $Runde_
Local $_a_Hash
Local $_a_S_Save_
Local $_a_X_File_
Local $_a_X_File_Next_
Local $_0_ = 0x00000000
Local $_1_ = 0x00000000
Local $_a_A_ArraySave_[0x000F423F][0x0000003]
Local $_a_B_ArraySave_[0x000F423F][0x0000002]
Local $_a_Tren_[0x00000004] = [Chr(0x00000020), Chr(0x0000002A), Chr(0x0000005C), Chr(0x0000007C)]
Dim $iTimer = TimerInit()
Dim $F = _File_List_Hash_Dubell('D:', 0, '*')
_ArrayDisplay($F, TimerDiff($iTimer))
Func _File_List_Hash_Dubell($a_Pfad_, $_Set_Runde_ = True, $a_Wildcards_ = True)
If (StringRight($a_Pfad_, 0x00000001) <> $_a_Tren_[0x00000002]) Then $a_Pfad_ = ($a_Pfad_ & $_a_Tren_[0x00000002])
If ($_Set_Runde_ = $_a_Tren_[0x00000000] Or $_Set_Runde_ = 0x00000000) Then $_Set_Runde_ = (0x00000001)
If ($a_Wildcards_ = $_a_Tren_[0x00000000]) Then $a_Wildcards_ = ($_a_Tren_[1])
If ($_U_ < $Runde_) Then
ReDim $_a_B_ArraySave_[0x000F423F][0x00000002]
ReDim $_a_A_ArraySave_[0x000F423F][0x00000003]
EndIf
$_U_ += 0x00000001
_Crypt_Startup()
_Show_Dubell_Hash_($a_Pfad_, $a_Wildcards_)
_Crypt_Shutdown()
If ($_0_ = 0x00000000) Then Return SetError(0x00000002, 0x00000000, $_a_Tren_[0x00000000])
$Runde_ = ($_U_)
Switch ($Runde_)
Case ($_Set_Runde_)
ReDim $_a_A_ArraySave_[$_0_][0x00000003]
_ArraySort($_a_A_ArraySave_, 0x00000000, 0x00000000, 0x00000000, 0x00000000)
_Hash_Dubell_List_($_a_A_ArraySave_, $_0_)
If ($_1_ = 0x00000000) Then Return SetError(0x00000002, 0x00000000, $_a_Tren_[0x00000000])
ReDim $_a_B_ArraySave_[$_1_][0x00000002]
$_0_ = 0x00000000
$_1_ = 0x00000000
Return ($_a_B_ArraySave_)
EndSwitch
Return ($_a_B_ArraySave_)
EndFunc ;==>_File_List_Hash_Dubell
Func _Show_Dubell_Hash_($a_Pfad_, $a_Wildcards_)
$_a_X_File_ = FileFindFirstFile($a_Pfad_ & $a_Wildcards_)
If ($_a_X_File_ <> -0x00000001) Then
Do
$_a_X_File_Next_ = FileFindNextFile($_a_X_File_)
If (@error) Then ExitLoop
If (@extended = 0x00000001) Then ContinueLoop
$_a_Hash = String(_Crypt_HashFile($a_Pfad_ & $_a_X_File_Next_, 0x00008003))
If ($_a_Hash <> 0x00000000) Then ContinueLoop
$_a_A_ArraySave_[$_0_][0x00000000] = ($_a_Hash)
$_a_A_ArraySave_[$_0_][0x00000001] = ($_a_X_File_Next_)
$_a_A_ArraySave_[$_0_][0x00000002] = ($a_Pfad_ & $_a_X_File_Next_)
$_0_ += 0x00000001
Until False
FileClose($_a_X_File_)
EndIf
Dim $a_Verzeichnis_ = _FileListToArray($a_Pfad_, $_a_Tren_[0x00000001], 0x00000002)
For $_i_ = 0x00000001 To UBound($a_Verzeichnis_) - 0x00000001
If (_File_Link_($a_Pfad_ & $a_Verzeichnis_[$_i_]) = True) Then ContinueLoop
_Show_Dubell_Hash_(String($a_Pfad_ & $a_Verzeichnis_[$_i_] & $_a_Tren_[0x00000002]), $a_Wildcards_)
Next
EndFunc ;==>_Show_Dubell_Hash_
Func _Hash_Dubell_List_($_a_C_ArraySave_, $_0_)
For $_i_ = 0x00000000 To $_0_ - 0x00000001
$_a_S_Save_ = $_a_Tren_[0x00000000]
For $_e_ = $_i_ To $_0_ - 0x00000001
If ($_a_C_ArraySave_[$_e_][0x00000000] <> $_a_C_ArraySave_[$_i_][0x00000000]) Then ExitLoop
$_a_S_Save_ &= ($_a_C_ArraySave_[$_e_][0x00000002] & $_a_Tren_[0x00000003])
Next
If ($_e_ - $_i_ < 0x00000002) Then ContinueLoop
$_a_B_ArraySave_[$_1_][0x00000000] = ($_a_C_ArraySave_[$_i_][0x00000001])
$_a_B_ArraySave_[$_1_][0x00000001] = (StringTrimRight($_a_S_Save_, 0x00000001))
$_i_ += ($_e_ - $_i_ - 0x00000001)
$_1_ += 0x00000001
Next
EndFunc ;==>_Hash_Dubell_List_
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_
_Reg_Rekursiv
Spoiler anzeigen
;#RequireAdmin
#include-once
#include <Array.au3>
;===================================================================================================================================================#
;~ Function Name....: _Reg_List_Rekursiv()
;
;~ Description......: Auflistung von RegPfad
;
;~ $_a_Pfad_........: RegPfad
;~ $_Set_Runde_.....: '1' ( Standart ) wie oft die Funktion aufgerufen wird ( beispiel HKEY_USERS & HKEY_CURRENT_USER durchsuchen auf 2 setzen )
;
;~ Return Value(s)..: Array ( Standard ) mit den gefundenen RegPfad Array[0] endhält die anzahl ( Fund )
;
;~ Author(s)........: Kleiner27 (http://www.autoit.de) # 27.03.2010 09:00 #
;===================================================================================================================================================#
Local $_U_
Local $Runde_
Local $RegPaht_Next_
Local $_a_Zaehlen_ = 0x00000001
Local $Reg_Paht_Save_[0x000F423F]
Local $_a_Tren_[0x00000002] = [Chr(0x00000020), Chr(0x0000005C)]
Dim $iTimer = TimerInit()
Dim $F = _Reg_List_Rekursiv('HKEY_CURRENT_USER', 0)
_ArrayDisplay($F, TimerDiff($iTimer))
Func _Reg_List_Rekursiv($RegPaht, $_Set_Runde_ = True)
If ($_Set_Runde_ = $_a_Tren_[0x00000000] Or $_Set_Runde_ = 0x00000000) Then $_Set_Runde_ = (0x00000001)
If ($_U_ < $Runde_) Then
ReDim $Reg_Paht_Save_[0x000F423F]
EndIf
$_U_ += 0x00000001
_Show_Reg_Rekursiv($RegPaht)
$Runde_ = ($_U_)
Switch ($Runde_)
Case ($_Set_Runde_)
ReDim $Reg_Paht_Save_[$_a_Zaehlen_]
$Reg_Paht_Save_[0x00000000] = ($_a_Zaehlen_)
$_a_Zaehlen_ = 0x00000001
Return ($Reg_Paht_Save_)
EndSwitch
Return ($Reg_Paht_Save_)
EndFunc ;==>_Reg_List_Rekursiv
Func _Show_Reg_Rekursiv($RegPaht)
For $i = 0x00000001 To 0x000F423F
$RegPaht_Next_ = RegEnumKey($RegPaht, $i)
If @error <> 0x00000000 Then ExitLoop
$Reg_Paht_Save_[$_a_Zaehlen_] = ($RegPaht & $_a_Tren_[0x00000001] & $RegPaht_Next_)
$_a_Zaehlen_ += 0x00000001
_Show_Reg_Rekursiv($RegPaht & $_a_Tren_[0x00000001] & $RegPaht_Next_)
Next
EndFunc ;==>_Show_Reg_Rekursiv
Viel Spass!
LG Kleiner