#include-once
#include <File.au3>
#include <Array.au3>

Local $a_Tren[4] = ['', '*', '\', '|'], $a_Save[1][2], $b_Save[1][2], $d_Save, $a_Ende, $a_Split, $c_Save, $z_0, $z_1, $z_2
Local $a_D, $a_D1, $a_Pfad

$iTimer = TimerInit()
$F = _List_Folder_Dubel('C:')
_ArrayDisplay($F, TimerDiff($iTimer))

Func _List_Folder_Dubel($a_Pfad)
	If (StringRight($a_Pfad, 1) <> $a_Tren[2]) Then $a_Pfad = ($a_Pfad & $a_Tren[2])
	ReDim $b_Save[999999][2]
	ReDim $a_Save[999999][2]
	$z_0 = 0
	$z_2 = 0
	_Show_Dubel($a_Pfad)
	ReDim $a_Save[$z_0][2]
	_ArraySort($a_Save)
	_Dubel_Finder($a_Save)
	ReDim $b_Save[$z_2][2]
	Return ($b_Save)
EndFunc   ;==>_List_Folder_Dubel

Func _Show_Dubel($a_Pfad)
	$a_D = FileFindFirstFile($a_Pfad & '*')
	If $a_D <> -1 Then
		Do
			$a_D1 = FileFindNextFile($a_D)
			If @error Then ExitLoop
			If @extended Then ContinueLoop
			$a_Save[$z_0][0] = $a_D1
			$a_Save[$z_0][1] = ($a_Pfad & $a_D1)
			$z_0 += 1
		Until 0
		FileClose($a_D)
	EndIf
	Dim $a_V = _FileListToArray($a_Pfad, $a_Tren[1], 2)
	For $i = 1 To UBound($a_V) - 1
		_Show_Dubel($a_Pfad & $a_V[$i] & $a_Tren[2])
	Next
EndFunc   ;==>_Show_Dubel

Func _Dubel_Finder($c_Save)
	$a_Ende = UBound($c_Save) - 1
	For $i = 0 To $a_Ende
		$z_1 = 0
		$d_Save = $a_Tren[0]
		For $j = $i To $a_Ende
			If ($c_Save[$j][0] <> $c_Save[$i][0]) Then ExitLoop
			$z_1 += 1
			$d_Save &= ($c_Save[$j][1] & $a_Tren[3])
		Next
		If ($z_1 < 2) Then ContinueLoop
		$b_Save[$z_2][0] = $c_Save[$i][0]
		$b_Save[$z_2][1] = $d_Save
		$z_2 += 1
		$i += ($z_1 - 1)
	Next
EndFunc   ;==>_Dubel_Finder