Скрипт для сортировки и поиска повторений фото видео архивов - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
Скрипт для сортировки и поиска повторений фото видео архивов
Godarck Дата: Среда, 24.06.2020, 16:31 | Сообщение # 1
AHK Скриптер
Сообщений: 252
Статус: Offline
Скрипт для сканирования всех папок и файлов, начиная от той директории, где лежит сам скрипт.
Сканирует все файлы. Составляет список. Сравнивает между собой файлы на совпадение размера файла (в байтах).
Перемещает все найденные уникальные файлы по 3м папкам: Фото Видео Разное.
Сохраняет родительскую папку для изображений.
Все видео перемещает в одну папку.
Полезен для сортировки архивов, где могут быть повторяющиеся файлы.
В случае каких либо ошибок файлы не теряются.


Код


SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

    
ArrayNew := []
ArrayReady := []

if FileExist("C:\WINDOWS\system32\ntimage.gif")
    SplashImage, %A_WinDir%\system32\ntimage.gif, A,,, Installation
Progress, M %pr%,Нажать ESC для выхода ,Составляем список файлов, Скан папок

Loop Files, %A_ScriptDir%\*.*, R  ; Recurse into subfolders.
{
    ;;StringTrimLeft, DirectoryName, A_LoopFileDir, "\"
    if (A_LoopFileDir != A_ScriptDir)
    {
    StringGetPos, OutputVar, A_LoopFileDir, \, R1
    OutputVar += 1
    StringTrimLeft, DirectoryName,A_LoopFileDir, OutputVar
    }
    

    if A_LoopFileDir not Contains NewVideos,NewPhotos,NewOthers
    {

  if not DirectoryName
   DirectoryName := "StartFolder"
  ArrayNew.Insert({vPath:A_LoopFileFullPath,vSize:A_LoopFileSize,vExt:A_LoopFileExt,vName:A_LoopFileName,vFolder:DirectoryName})
  Progress, 100, %A_LoopFileName%
    }
}

Progress, Off
Repeat := 0
vNull := 0
TotalRepeatSize := 0
TotalSize := 0
pr := 0

Count := ArrayNew.MaxIndex()
IndexPer := ArrayNew.MaxIndex() // 100
if ( IndexPer < 1 )
    IndexPer := 1
if FileExist("C:\WINDOWS\system32\ntimage.gif")
    SplashImage, %A_WinDir%\system32\ntimage.gif, A,,, Installation
Progress, M %pr%, Всего %Count% ,Ищем повторяющиеся файлы, Поиск

for i, e in ArrayNew
{    

    p:= e.vName
    if (IndexPer = 1)
    {
  pr += 1
  Progress, %pr%, %pr%

    }
    else
    if ( Mod(i, IndexPer) = 0 )
    {
  pr += 1
  Progress, %pr%, %pr%
    }

  if (e.vSize)
  {
   Add := 1

   for index, element in ArrayReady
   {
     if (element.vSize = e.vSize)
     {
      
      Add := 0
      Repeat += 1
      TotalRepeatSize += e.vSize
     }
   }
   
   if Add
   {
    TotalSize += e.vSize
    ArrayReady.Insert({vPath:e.vPath,vSize:e.vSize,vExt:e.vExt,vName:e.vName,vFolder:e.vFolder})
   }
  }
  else
   vNull += 1
}

Progress, Off
TotalRepeatSize := TotalRepeatSize // 1024
TotalRepeatSize := TotalRepeatSize / 1024

TotalSize := TotalSize // 1024
TotalSize := TotalSize / 1024

MsgBox,,, % "Всего найдено: " ArrayNew.MaxIndex() "`n Уникальных (в том числе АХК): " ArrayReady.MaxIndex() "`nПовторений: " Repeat "`nПустых файлов: " vNull "`nРазмер файлов для перемещения: " TotalSize " мБ`nРазмер повторений: " TotalRepeatSize " мБ`n`n "

    MsgBox 0x31, Начать перемещение файлов?,
    (
    Файлы не удаляются. Файлы, которые повторяются останутся в своих папках.`nПосле перемещения все уникальные файлы будут отсортированы в 3х папках: NewVideos,NewPhotos,NewOthers
    Для продолжения нажмите "OK".  Для отмены нажмите "Cancel".
    )
    IfMsgBox Cancel
        ExitApp
  
pr := 0
IndexPer := ArrayReady.MaxIndex() // 100

FileCreateDir, NewVideos
FileCreateDir, NewPhotos
FileCreateDir, NewOthers

vIm := 0
vVid := 0
vOth := 0

IndexPer := ArrayReady.MaxIndex() // 100
if ( IndexPer < 1 )
    IndexPer := 1

if FileExist("C:\WINDOWS\system32\ntimage.gif")
    SplashImage, %A_WinDir%\system32\ntimage.gif, A,,, Installation
Progress, M  %pr%, %p% ,Перемещение, Перемещение
for i, e in ArrayReady
{
    p:= e.vName
    if (IndexPer = 1)
    {
  pr += 1
  text := e.vName
  Progress, %pr%, %text%
    }
    else
    if ( Mod(i, IndexPer) = 0 )
    {
  pr += 1
  text := e.vName
  Progress, %pr%, %text%
    }

    var :=  e.vExt
    if var not contains ahk
    if var contains jpg,png,gif,jpeg,bmp
    {    
    IfNotExist, %  A_ScriptDir "\NewPhotos\" e.vFolder
  FileCreateDir, % A_ScriptDir "\NewPhotos\" e.vFolder
  
  FileMove, % e.vPath , % A_ScriptDir "\NewPhotos\" e.vFolder "\" e.vName
  if ErrorLevel
            MsgBox,,,% "Файл " e.vPath " не перемещен в " A_ScriptDir "\NewPhotos\" e.vFolder "\" e.vName
  else
  vIm += 1
    }
    else
  if var contains mp4,mov,3gp,avi,wmv,webm,flv,mkv,mpg,ts,mpeg,m4v
    {
  FileMove, % e.vPath , % A_ScriptDir "\NewVideos\" e.vName
  if ErrorLevel
            MsgBox,,,% "Файл " e.vPath " не перемещен в " A_ScriptDir "\NewPhotos\" e.vFolder "\" e.vName
  else
  vVid += 1
    }
    else
    {
  FileMove, % e.vPath , % A_ScriptDir "\NewOthers\" e.vName
  if ErrorLevel  
            MsgBox,,,% "Файл " e.vPath " не перемещен в " A_ScriptDir "\NewPhotos\" e.vFolder "\" e.vName
  else
  vOth += 1
    }
}
Progress, Off
MsgBox,,, Завершено.`nВсего скопировано`nИзображений %vIm%`nВидео %vVid%`nДругих файлов %vOth%
ExitApp
return

Esc::
ExitApp


Бесплатный и новый бот рыбалки для GTA V RP
GunList для GTA V RP - писать в ЛС
Fake Time для GTA V RP


Сообщение отредактировал CZAR - Четверг, 25.06.2020, 01:09
  • Страница 1 из 1
  • 1
Поиск: