Что нового

[Автоматизация] Перенос файлов по расширению

millgan

Новичок
Сообщения
42
Репутация
2
Версия AutoIt: 3.х

Описание: Всем привет! Задача: Перенести мультимедиа файлы с одного ресурса на другой. Осложнения): 1)структура папок должна сохраниться 2) На старом месте должен появиться ярлык на файлик (ведущий в новое расположение)
 
Автор
M

millgan

Новичок
Сообщения
42
Репутация
2
Папок содержащих только медиа файлы мало, обычно это разнородное содержимое: доки вордовские, пдфки и сканы в JPG. Дак вот выдернуть нужно только JPG(gif tiff итд), ну и канечно видео (avi, mpg и тд.)
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Тогда можно вот так, тестил на mp3
Вроде бы работает так как вам нужно:
Код:
#include<FileOperations.au3>
#include<File.au3>
#include<Array.au3>
Global $1,$2,$3,$4;Пустые переменные для puthsplit
$FolderLow=@ScriptDir;Папка в которой все подпапки будут сканироватся на наличие медиа
$DirMov="D:";Место куда будем копировать файлы
$MediaExt="*.jpg|*.jpeg|*.gif|*.tiff|*.avi|*.mpg|*.mp3";Расширения которые входят в рамки медиа(можно дополнять, по образцу)
$FileA=_FO_FileSearch($FolderLow,$MediaExt,True,125,0,2)
$SizeF=UBound($FileA)
;~ _ArrayDisplay($FileA)
Dim $WhoFolder[$SizeF][3]
For $i=0 To $SizeF-1
	Local $F=_PathSplit($FileA[$i],$1,$2,$3,$4)
	$WhoFolder[$i][0]=$F[2]
	$WhoFolder[$i][1]=$F[3]&$F[4]
	$WhoFolder[$i][2]=$F[1]
Next;Определяем путь папок до файлов, для сохранения структуры
;~ _ArrayDisplay($WhoFolder)
For $i=0 To $SizeF-1
	Local $DM=$DirMov&"\"&$WhoFolder[$i][0]&$WhoFolder[$i][1]
	$d=FileMove(FileGetShortName($FileA[$i],1),$DM,8)
	FileCreateShortcut($dm,$WhoFolder[$i][2]&$WhoFolder[$i][0]&$WhoFolder[$i][1])
Next
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
millgan
http://www.autoitscript.com/forum/topic/133224-filesearch-foldersearch/?p=928505
 
Автор
M

millgan

Новичок
Сообщения
42
Репутация
2
Структуру папок создал, но файлы не переносит((
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Меня в примере MnM настораживает FileGetShortName. Эта функция там точно нужна?
 
Автор
M

millgan

Новичок
Сообщения
42
Репутация
2
Вообщем если запускать так $FolderLow=@ScriptDir то все копируется и ярлыки создаются
Если указать конкретно $FolderLow="\\SRVSHARE\lala\lala\tutu\" создается только структура папок

если не сложно запихните пожалуйста этот скрипт в гуишку. Ну там выбор откуда и куда с возможностью указывать расширения
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
DarWIM сказал(а):
FileGetShortName. Эта функция там точно нужна?
Нужна, когда писал на первых 5 строчках, думал вообще только последним циклом обойдусь, и простым поиском. Но в процессе тестинга возникала необходимость одновременно иметь пути и относительные(для структуризации конечного пути), и полного пути, для создания ярлычка. FileGetShortName собственно работает с относительными путями, преобразовывая их.
millgan сказал(а):
запихните пожалуйста этот скрипт в гуишку
Хорошо, я постараюсь это сделать, на счет приведенного конкретного пути то я не знаю что ответить=)
 
Верх