#include-once
#include <File.au3>
#include <Array.au3>

Local $a_Tren[4] = ['', '*', '\', '|'], $a_Save[1], $b_Save[1][2], $d_Save, $a_Ende, $a_Split, $z_0, $z_1, $z_2

$iTimer = TimerInit()
$F = _List_Folder_Dubel('D:\')
_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]
	$z_0 = 0
	$z_2 = 0
	_Show_Dubel($a_Pfad)
	ReDim $a_Save[$z_0]
	_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)
	Dim $a_D = _FileListToArray($a_Pfad, $a_Tren[1], 1)
	For $i = 1 To UBound($a_D) - 1
		$a_Save[$z_0] = $a_D[$i]
		$z_0 += 1
	Next
	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 Step +1
		;ConsoleWrite($i & '   ' & $a_Ende & '    ' & $c_Save[$i] & @CRLF)
		If ($c_Save[$i] = $a_Tren[0]) Then ContinueLoop
		$z_1 = 0
		$d_Save = $a_Tren[0]
		For $j = $i To $a_Ende Step +1
			If (StringLeft($c_Save[$j], 5) <> StringLeft($c_Save[$i], 5) Or StringRight($c_Save[$j], 5) <> StringRight($c_Save[$i], 5)) Then ExitLoop
			If ($c_Save[$j] <> $c_Save[$i]) Then ContinueLoop
			$z_1 += 1
			$d_Save &= ($j & $a_Tren[3])
		Next
		If ($z_1 > 1) Then
			$b_Save[$z_2][0] = $c_Save[$i]
			$b_Save[$z_2][1] = $z_1
			$z_2 += 1
			$a_Split = StringSplit($d_Save, $a_Tren[3])
			For $e = 1 To UBound($a_Split) - 1
				$c_Save[$a_Split[$e]] = $a_Tren[0]
			Next
		EndIf
	Next
EndFunc   ;==>_Dubel_Finder