;#Include <File.au3> #include <WindowsConstants.au3> ;#include <GUIConstants.au3> AutoItSetOption("TrayIconHide", 1) ;скрыть в системной панели индикатор AutoIt Global $Stack[50] Global $Stack1[50] GUICreate("Сортировка по расширению",440,90, -1, -1, -1, $WS_EX_ACCEPTFILES) ; размер окна $tab=GUICtrlCreateTab (0,0, 440,90) ; размер вкладки $tab3=GUICtrlCreateTabitem ("") ; имя вкладки GUICtrlCreateLabel ("Путь к каталогу (используйте drag-and-drop)", 20,10,400,20) $inputsh=GUICtrlCreateInput ("", 20,30,400,22) GUICtrlSetState(-1,8) $Label000=GUICtrlCreateLabel ('Строка состояния', 20,60,200,20) $startsh=GUICtrlCreateButton ("Сортировать", 340,60,90,22) GUICtrlCreateTabitem ("") ; конец вкладок GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $startsh $inputsh0=GUICtrlRead ($inputsh) ; поиск файлов GUICtrlSetData($Label000, 'Началось...') If FileExists($inputsh0) Then FileFindNextFirst($inputsh0) $aInputsh1 = StringRegExp($inputsh0, "(^.*)\\(.*)$", 3) While 1 $tempname = FileFindNext() If $tempname = "" Then ExitLoop ; Отделить в массив путь и расширение $aPathname = StringRegExp($tempname, "(^.*)\\(.*)$", 3) $aRasshir = StringRegExp($tempname, "(^.*)\.(.*)$", 3) If @error=1 Then $aRasshir = StringRegExp('1.111', "(^.*)\.(.*)$", 3) If FileExists($aInputsh1[0]&'\root\'&$aRasshir[1]&'\'&$aPathname[1]) Then ; цикл проверки одноимённых файлов For $i=1 To 100 $aName = StringRegExp($aPathname[1], "(^.*)\.(.*)$", 3) If @error=1 Then $aName = StringRegExp($aPathname[1]&'.111', "(^.*)\.(.*)$", 3) If FileExists($aInputsh1[0]&'\root\'&$aRasshir[1]&'\'&$aName[0]&'_'&$i&'.'&$aName[1]) Then ContinueLoop Else FileMove($tempname, $aInputsh1[0]&'\root\'&$aRasshir[1]&'\'&$aName[0]&'_'&$i&'.'&$aName[1], 8) ExitLoop EndIf Next Else FileMove($tempname, $aInputsh1[0]&'\root\'&$aRasshir[1]&'\', 8) EndIf WEnd EndIf GUICtrlSetData($Label000, 'Выполнено...') Case $msg = -3 ExitLoop 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 |