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 |
|
|
|