Что нового

Поиск одинаковых файлов в папке и дальнейшие действия с ними

ChAV

Новичок
Сообщения
12
Репутация
0
День добрый.
Поиском посмотрел (может плохо), в общем нужно искать в автоматическом режиме одинаковые файлы (имя файла) в папке. Расширения у файлов разные, имя одинаковое.

Код:
#Include<file.au3>
;#include <Zip.au3>
#include <Date.au3>
#Include <WinAPIEx.au3>
#include <ZIP_UDF.au3>
#include <Encoding.au3>
#Include <Array.au3>

$filefolder="d:\Test\Test\Test\Test"


	If FileExists($filefolder)  Then 
		Dim $parse,$parse1
		$array = StringSplit(StringReplace($filefolder, "\", @LF), @LF)
		$parse=$array[5]			;название папки				
		$parse1 = $array[1]	& "\" 	&$array[2]& "\" &$array[3]& "\" &$array[4]&	"\" &$array[5] & "\"
		FileCopy($parse1 & "A1_*.*", "D:\Test\BackUP\"	&$array[5] & "\" ,9)	

		$FileList=_FileListToArray("D:\!Parma\Do2Server\Do\" & $parse)
		
		_ArrayDisplay($FileList,"$FileList")

		$search = FileFindFirstFile("d:\Test\Test\Test\" & $parse	&	"\A1_*.*")  

		
;MsgBox(4096, "", $sFile )
    EndIf
	
For $i=1 to $FileList[0] step 1
	 $sFile = FileFindNextFile($search)
	$namefile=StringSplit($sFile,".")
	MsgBox(4096, "", $namefile[1])
Next


перебрал файлы, нашел их имена в папке. Как теперь сцепить их в группы одинаковых.....ничего на ум не приходит
 
A

Alofa

Гость
Ну как-то так звучит моя мысль :whistle:
Код:
#include <Array.au3>
#include <File.au3>

$filefolder = @SystemDir
;$filefolder = 'd:\Test\Test\Test\Test'

$parse = StringRegExpReplace($filefolder, '^(?:.*\\)([^\\]*?)(?:\.[^.]+)?$', '\1') ; название папки
;$parse = StringTrimLeft($filefolder, StringInStr($filefolder, '\', 2, -1)) ; название папки (Альтернативный способ)

SetError(0)
$FLArray = _FileListToArray($filefolder, '*', 1)

If $FLArray = 0 Then
	If @error = 1 Then MsgBox(16, 'Ошибка', 'Путь не найден или неисправный')
	If @error = 4 Then MsgBox(48, 'Ой', 'Папка пуста')
	Exit
EndIf
If $FLArray[0] = 1 Then Exit MsgBox(48, 'Ой', 'В папке всего один файл')

Local $FileList[1][2]

For $i = 2 To $FLArray[0]
	Local $File_1, $File_2, $Size, $Index
	$File_1 = StringRegExpReplace($FLArray[$i - 1], '(.*)(\.[^.]+)', '\1') ; Получаем имя файла без расширения (если оно есть)
	$File_2 = StringRegExpReplace($FLArray[$i], '(.*)(\.[^.]+)', '\1')
	If $File_1 = $File_2 Then ; Действия при совпадении имен
		$Size = UBound($FileList, 1)
		If $Index = 0 Then ; Действия при первом совпадении имен (Открытие группы)
			ReDim $FileList[$Size + 2][2]
			$FileList[$Size][0] = $File_1 ; Имя Группы
			$FileList[$Size][1] = $FLArray[$i - 1] ; Первый файл
			$FileList[$Size + 1][1] = $FLArray[$i] ; Второй файл
			$Index = 1
			$FileList[0][0] += 1 ; Считаем количество групп
		Else
			ReDim $FileList[$Size + 1][2]
			$FileList[$Size][1] = $FLArray[$i]
		EndIf
		$FileList[0][1] += 1 ; Считаем количество совпадений
	Else
		$Index = 0
	EndIf
Next
If Not $FileList[0][1] Then Exit MsgBox(48, 'Ой', 'Совпадения НЕ найдены!')

_ArrayDisplay($FileList, 'Найденные совпадения', Default, 32 + 64, Default, 'Группы|Совпадения', Default, 0xDDFFDD)
;_ArrayDisplay($FileList, 'Найденные совпадения')
 
Верх