AZJIO Posted July 8, 2010 Share Posted July 8, 2010 (edited) Does Not work removing need help line 100 expandcollapse popup; ; @AZJIO 2010.07.7 #include <Crypt.au3> #include <File.au3> #include <Array.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <ListViewConstants.au3> #NoTrayIcon Global $Stack[50], $Stack1[50] Global $aArr, $a, $MD5Path HotKeySet('{ESC}', "_Quit") $Gui = GUICreate("Search duplicates", 500, 444, -1, -1, 0x00040000, 0x00000010) $CatchDrop = GUICtrlCreateInput("", 0, 0, 500, 440) GUICtrlSetState(-1, 136) GUICtrlSetResizing(-1, 1) $StatusBar = GUICtrlCreateLabel(@CRLF&'Statusbar AZJIO 2010.07.7', 5, 380, 480, 30) GUICtrlSetResizing(-1, 512 + 256 + 64 + 2) $restart = GUICtrlCreateButton("R", 480, 2, 18, 20) GUICtrlSetTip(-1, "Restart") GUICtrlCreateLabel("drag-and-drop", 200, 5, 160, 18) GUICtrlSetResizing(-1, 3 + 32 + 256 + 512) GUICtrlCreateLabel("Folder", 15, 5, 60, 17) GUICtrlSetResizing(-1, 3 + 32 + 256 + 512) $folder = GUICtrlCreateList("", 10, 25, 480, 100) GUICtrlSetResizing(-1, 7 + 32 + 512) ; GUICtrlCreateLabel("Duplicates", 15, 130, 60, 18) ; GUICtrlSetResizing(-1, 3 + 32 + 256 + 512) ; $Dubl = GUICtrlCreateList ("", 10, 150, 480, 200) $Dubl = _GUICtrlListView_Create($Gui, ' ', 10, 130, 480, 220, -1, -1, True) _GUICtrlListView_SetExtendedListViewStyle($Dubl, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES,$LVS_OWNERDRAWFIXED)) _GUICtrlListView_SetBkColor($Dubl, 0xf0f0f0) _GUICtrlListView_SetTextBkColor($Dubl, 0xf0f0f0) _GUICtrlListView_EnableGroupView($Dubl) _GUICtrlListView_SetColumn($Dubl, 0, 'Duplicates', 480) ;$Dubl = GUICtrlCreateListView(' ', 10, 150, 480, 200, $LVS_NOCOLUMNHEADER + $LVS_SHOWSELALWAYS, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES) ;GUICtrlSetBkColor(-1, 0xf0f0f0) ; 0xE0DFE3 ;GUICtrlSetResizing($Dubl, 7 + 32 + 64) ; $Select = GUICtrlCreateButton("Select", 180, 355, 70, 25) ; GUICtrlSetResizing(-1, 512 + 256 + 64 + 4) $Clear = GUICtrlCreateButton("Clear", 260, 355, 70, 25) GUICtrlSetResizing(-1, 512 + 256 + 64 + 4) $Search = GUICtrlCreateButton("Search", 340, 355, 70, 25) GUICtrlSetResizing(-1, 512 + 256 + 64 + 4) $Delete = GUICtrlCreateButton("Delete", 420, 355, 70, 25) GUICtrlSetResizing(-1, 512 + 256 + 64 + 4) $aSizePath='' $folderList = '' GUISetState() _Crypt_Startup() While 1 $msg = GUIGetMsg() Select ; drag-and-drop Case $msg = -13 $triger = 0 If @GUI_DropId = $CatchDrop Then $aFolder = StringSplit(GUICtrlRead($CatchDrop), '|') $GuiPos = WinGetPos($Gui) GUICtrlSetPos($CatchDrop, $GuiPos[2], 0) GUICtrlSetData($CatchDrop, '') GUICtrlSetPos($CatchDrop, 0, 0) For $i = 1 To $aFolder[0] If StringInStr(FileGetAttrib($aFolder[$i]), "D") = 0 Then $triger = 1 Else GUICtrlSetData($folder, StringRegExpReplace($aFolder[$i], '(?:.*)\\(.*), '\1')) $folderList &= '|' & $aFolder[$i] EndIf Next EndIf If $triger = 1 Then $triger = 0 MsgBox(0, "Error", 'Only folders.') EndIf Case $msg = $Clear _GUICtrlListView_DeleteAllItems($Dubl) $folderList = '' GUICtrlSetData($folder, '') GUICtrlSetData($Dubl, '') $aSizePath = '' $aArr = '' $aArrT = '' $TempMD5 = '' $aArrOut = '' $aArrMD5 = '' Case $msg = $Delete GUICtrlSetData($StatusBar, 'Start Delete...') ;_GUICtrlListView_EnableGroupView($Dubl,False) ;_ArrayDisplay($aArrOut, "$aArrOut") For $i = 1 to $aArrOut[0][0] ;_ArrayDisplay(_GUICtrlListView_GetItem($Dubl, $i), "step "& $i) $zTrig=0 ;MsgBox(0, 'Message', $aArrOut[0][0] &@CRLF& $i) If _GUICtrlListView_GetItemChecked($Dubl,$aArrOut[$i][0])=1 And FileExists($aArrOut[$i][1]) Then ;MsgBox(0, 'step - '&$i, $aArrOut[0][0]&' - total' &@CRLF& $aArrOut[$i][0]&' - ID' &@CRLF&'Path - ' &$aArrOut[$i][1]) ; If $zTrig=1 And _GUICtrlListView_GetItemChecked($Dubl,$aArrOut[$i-1][0])=1 And FileExists($aArrOut[$i-1][1]) Then ; $zTrig=0 ; FileDelete($aArrOut[$i-1][1]) ; _GUICtrlListView_DeleteItem($Dubl, $aArrOut[$i-1][0]) ; EndIf ; $zTrig=1 FileDelete($aArrOut[$i][1]) _GUICtrlListView_DeleteItem($Dubl, $aArrOut[$i][0]) $aArrOut[$i][0]='' $aArrOut[$i][1]='' EndIf Next ;_ArrayDisplay($aArrOut, "$aArrOut") GUICtrlSetData($StatusBar, 'Removed') Case $msg = $Search If $aSizePath<>'' Then _GUICtrlListView_DeleteAllItems($Dubl) GUICtrlSetData($Dubl, '') $aSizePath = '' $aArr = '' $aArrT = '' $TempMD5 = '' $aArrOut = '' $aArrMD5 = '' EndIf $aSizePath = '' $timer = TimerInit() If StringLeft($folderList, 1)='|' Then $folderList = StringTrimLeft($folderList, 1) $aFolderList = StringSplit($folderList, '|') For $i = 1 To $aFolderList[0] If FileExists($aFolderList[$i]) Then FileFindNextFirst($aFolderList[$i]) While 1 $tempname = FileFindNext() If $tempname = "" Then ExitLoop $aSizePath &= '|' & FileGetSize($tempname) & '|' & $tempname WEnd EndIf Next $aArrT = StringSplit(StringTrimLeft($aSizePath, 1), "|") $aSizePath='1' ;clear and indicator ;_ArrayDisplay($aArrT, "$aArrT") ; (size|path) ;_ArrayDisplay($aArrT,"$aArrT",-1,-1,-1,-1, 'size|path') Dim $aArr[$aArrT[0] / 2 + 1][2] $aArr[0][0] = $aArrT[0] / 2 For $i = 1 To $aArrT[0] If Mod($i, 2) = 0 Then $aArr[$i / 2][0] = Int($aArrT[$i - 1]) $aArr[$i / 2][1] = $aArrT[$i] EndIf Next _ArraySort($aArr, 0, 1, $aArr[0][0], 0) ;_ArrayDisplay($aArr, "$aArr") $aArrOut = '' Dim $aArrOut[1][2] $a = 0 $0b = 0 $gp=0 $kol=0 $triger = 0 $triger2 = 0 $TempSize = '' For $i = 1 To $aArr[0][0] $kol+=1 If $aArr[$i][0] = $TempSize Then If $triger = 0 Then $MD5Path = '' $MD5Path &= '|' & _Crypt_HashFile($aArr[$i - 1][1], 0x00008003) & '|' & $aArr[$i - 1][1] EndIf $triger = 1 $MD5Path &= '|' & _Crypt_HashFile($aArr[$i][1], 0x00008003) & '|' & $aArr[$i][1] Else $triger = 0 EndIf If $aArr[0][0]=2 and $triger = 1 Then $triger2 = 1 If $i = $aArr[0][0] Then $triger = 0 If $triger = 0 And $triger2 = 1 Then ; ====================================== $aMD5PathT = StringSplit(StringTrimLeft($MD5Path, 1), "|") ;_ArrayDisplay($aMD5PathT, "$aMD5PathT") Dim $aArrMD5[$aMD5PathT[0] / 2 + 1][2] $aArrMD5[0][0] = $aMD5PathT[0] / 2 For $o = 1 To $aMD5PathT[0] If Mod($o, 2) = 0 Then $aArrMD5[$o / 2][0] = $aMD5PathT[$o - 1] $aArrMD5[$o / 2][1] = $aMD5PathT[$o] EndIf Next _ArraySort($aArrMD5, 0, 1, $aArrMD5[0][0], 0) ;_ArrayDisplay($aArrMD5, "$aArrMD5") ;=================================================================== $0triger = 0 $0triger2 = 0 $TempMD5 = '' For $0i = 1 To $aArrMD5[0][0] If $a-$0b < 3 Then $a+=100 ReDim $aArrOut[$a][2] EndIf ;If $aArrMD5[$0i][0] = $TempMD5 and $aArrMD5[$0i][0]<>'' Then If $aArrMD5[$0i][0] = $TempMD5 Then If $0triger = 0 Then $0b += 1 $gp+=1 _GUICtrlListView_InsertGroup($Dubl, -1, $gp, '---'&$gp&'---') GUICtrlSetData($StatusBar, 'total: ' &$aArr[0][0]&', current: '&$kol &', group: '&$gp &', added: '&$0b &', time: '& Ceiling(TimerDiff($timer)/1000)&', size: '& Ceiling($aArr[$i][0]/1000)& 'kb' &@CRLF& $aArrMD5[$0i - 1][1]) $aArrOut[$0b][0] = _GUICtrlListView_AddItem($Dubl, $aArrMD5[$0i - 1][1]) _GUICtrlListView_SetItemGroupID($Dubl, $aArrOut[$0b][0], $gp) $aArrOut[$0b][1] = $aArrMD5[$0i - 1][1] EndIf $0triger = 1 $0b += 1 GUICtrlSetData($StatusBar, 'total: ' &$aArr[0][0]&', current: '&$kol &', group: '&$gp &', added: '&$0b &', time: '& Ceiling(TimerDiff($timer)/1000) &', size: '& Ceiling($aArr[$i][0]/1000)& 'kb' &@CRLF& $aArrMD5[$0i][1]) $aArrOut[$0b][0] = _GUICtrlListView_AddItem($Dubl, $aArrMD5[$0i][1]) _GUICtrlListView_SetItemGroupID($Dubl, $aArrOut[$0b][0], $gp) _GUICtrlListView_SetItemChecked($Dubl,$aArrOut[$0b][0]) $aArrOut[$0b][1] = $aArrMD5[$0i][1] Else $0triger = 0 EndIf ;_ArrayDisplay($aArrOut, "$aArrOut") ; If $0i = $aArrMD5[0][0] Then $0triger = 0 ; If $0triger = 0 And $0triger2 = 1 Then ;$gp+=1 ;_GUICtrlListView_InsertGroup($Dubl, -1, $gp, '---'&$gp&'---') ;_GUICtrlListView_AddItem($Dubl, ' ') ;GUICtrlSetState(-1,128) ; EndIf ; If $0triger = 1 Then ; $0triger2 = 1 ; Else ; $0triger2 = 0 ; EndIf $TempMD5 = $aArrMD5[$0i][0] _GUICtrlListView_SetColumnWidth($Dubl, 0, $LVSCW_AUTOSIZE) ;_GUICtrlListView_SetColumn($Dubl, 0, ' ', 480) Next EndIf ;================================================================================================================== If $triger = 1 Then $triger2 = 1 Else $triger2 = 0 EndIf $TempSize = $aArr[$i][0] Next ReDim $aArrOut[$0b+1][2] $aArrOut[0][0]=$0b GUICtrlSetData($StatusBar, 'total: ' &$aArr[0][0]&', groups: '&$gp &', added: '&$0b &', time: '& Ceiling(TimerDiff($timer)/1000) &@CRLF& 'Executed!') ;_ArrayDisplay($aArrOut, "$aArrOut") Case $msg = $restart _restart() Case $msg = -3 _Crypt_Shutdown() Exit EndSelect WEnd ;======================================== Func FileFindNextFirst($FindCat) $Stack[0] = 1 $Stack1[1] = $FindCat $Stack[$Stack[0]] = FileFindFirstFile($Stack1[$Stack[0]] & "\*.*") Return $Stack[$Stack[0]] EndFunc ;==>FileFindNextFirst Func FileFindNext() While 1 $file = FileFindNextFile($Stack[$Stack[0]]) If @error Then FileClose($Stack[$Stack[0]]) If $Stack[0] = 1 Then Return "" Else $Stack[0] -= 1 ContinueLoop EndIf Else If StringInStr(FileGetAttrib($Stack1[$Stack[0]] & "\" & $file), "D") > 0 Then $Stack[0] += 1 $Stack1[$Stack[0]] = $Stack1[$Stack[0] - 1] & "\" & $file $Stack[$Stack[0]] = FileFindFirstFile($Stack1[$Stack[0]] & "\*.*") ContinueLoop Else Return $Stack1[$Stack[0]] & "\" & $file EndIf EndIf WEnd EndFunc ;==>FileFindNext Func _restart() Local $sAutoIt_File = @TempDir & "\~Au3_ScriptRestart_TempFile.au3" Local $sRunLine, $sScript_Content, $hFile $sRunLine = @ScriptFullPath If Not @Compiled Then $sRunLine = @AutoItExe & ' /AutoIt3ExecuteScript ""' & $sRunLine & '""' If $CmdLine[0] > 0 Then $sRunLine &= ' ' & $CmdLineRaw $sScript_Content &= '#NoTrayIcon' & @CRLF & _ 'While ProcessExists(' & @AutoItPID & ')' & @CRLF & _ ' Sleep(10)' & @CRLF & _ 'WEnd' & @CRLF & _ 'Run("' & $sRunLine & '")' & @CRLF & _ 'FileDelete(@ScriptFullPath)' & @CRLF $hFile = FileOpen($sAutoIt_File, 2) FileWrite($hFile, $sScript_Content) FileClose($hFile) Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sAutoIt_File & '"', @ScriptDir, @SW_HIDE) Sleep(1000) Exit EndFunc ;==>_restart Func _Quit() Exit EndFunc ;==>_Quit Synchronization $aArrOut[$0b][0] = _GUICtrlListView_AddItem($Dubl, $aArrMD5[$0i][1]) $aArrOut[$0b][1] = $aArrMD5[$0i][1] string 109 (discrepancy) MsgBox(0, 'step - '&$i, $aArrOut[0][0]&' - total' &@CRLF& $aArrOut[$i][0]&' - ID' &@CRLF&Path - ' &$aArrOut[$i][1] &@CRLF& ItemText- ' & _GUICtrlListView_GetItemText($Dubl,$aArrOut[$i][0])) Edited July 8, 2010 by AZJIO My other projects or all Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now