при соответствующем флаге у FileCopy - структуру сама создастся.а если всеже использовать autoit, то создавать деревья на все папки и их копировать?
главное не размер, а кол-во файлов.З.Ы. размер, по идее, не должен привышать 25мб
чесгря, не понял.функция DirGetSize, я сравнивал значение, которое она возвращает в байтах, я пробовал любые значени точные, не точные со знаком больше меньше, не выдает результат. мб есть какие особенности использования?
DirGetSize(path)
If DirGetSize("G:\Ideal'nyj.virus.2009.P.DVDRip.740.avi") = 781537280 Then
MsgBox(4096,"","745Mb")
Else
MsgBox(4096,"","Else")
EndIf
If DirGetSize("G:\Ideal'nyj.virus.2009.P.DVDRip.740.avi") > 781537000 Then
MsgBox(4096,"","745Mb")
Else
MsgBox(4096,"","Else")
EndIf
неэффективноесли сначала скопировать все что есть
без рекурсии тут никак.вот сейчас думаю над тем, как перебрать все имеющиеся подкаталоги
#include <File.au3>
$src = FileSelectFolder('Please, choose folder to copy', '', 1 + 2 + 4, 'd:\prog\test\')
If @error Then Exit
$dest = FileSelectFolder('Please, choose folder to paste', '', 1 + 2 + 4, 'd:\prog\test\')
If @error Then Exit
$filter = 'exe|suo'; any other file extensions to be excluded from copy list separated by pipe "|"
_Copy($src, $dest, $filter)
Func _Copy($source, $destination, $filter = 'exe|vb|suo')
MsgBox(0, '', $source & @CRLF & $destination)
$aFolders = _FileListToArray($source, '*', 2); Folders
$aFiles = _FileListToArray($source, '*', 1); Files
If Not IsArray($aFolders) AND Not IsArray($aFiles) Then Return ''; No files or fodlers found in source path
For $j = 1 to $aFiles[0]
$ext = _ExtDefine($aFiles[$j])
If Not StringInStr($filter, $ext) Then FileCopy($source & '\' & $aFiles[$j], $destination & '\' & $aFiles[$j], 8)
Next
For $i = 1 to $aFolders[0]
$new_source = $source & '\' & $aFolders[$i]
$new_dest = $destination & '\' & $aFolders[$i]
_Copy($new_source, $new_dest, $filter); Recursive processing for subfolders
Next
EndFunc
;;; Function for determination of file extension
Func _ExtDefine($file)
If StringInStr($file, '\') Then
$aFile = StringSplit($file, '\')
$file = $aFile[$aFile[0]]
EndIf
If Not StringInStr($file, '.') Then Return ''
$aFile = StringSplit($file, '.')
Return $aFile[$aFile[0]]
EndFunc
;8 это чтобы создать папку если не существует, 1 это перезапись файлов
;Последняя 1-ца определяет исключение для фильтра ($sFile_Filter), иначе будет производиться поиск по заданному фильтру
$iRet = _File_xCopy("C:\Src", "C:\Dst", "(*.exe|*.suo)$", "", 8+1, 0, 1)
$iExtended = @extended
$iError = @error
MsgBox(64, "Results", StringFormat("ERROR:\t\t%i\nReturn:\t\t%i\nFiles Copied:\t%i", $iError, $iRet, $iExtended))
Func _File_xCopy($sSrc_Dir, $sDst_Dir, $sFile_Filter, $sFile_Prefix="", $iReplace=0, $iOnlyNew=0, $iExclIncl_Mode=0)
If Not StringInStr(FileGetAttrib($sSrc_Dir), "D") Then Return SetError(1, 0, 0)
Local $iRet_Extended = 0, $sRegExp_Filter, $hSearch, $sFile_Path, $sFile_Name
Local $iSrc_FileTime, $iDst_FileTime
$sSrc_Dir = StringRegExpReplace($sSrc_Dir, "\\+$", "")
$sDst_Dir = StringRegExpReplace($sDst_Dir, "\\+$", "")
$sRegExp_Filter = $sFile_Filter
$sRegExp_Filter = StringReplace($sRegExp_Filter, ".", "\.")
$sRegExp_Filter = "(?i)\A" & StringReplace($sRegExp_Filter, "*", ".*") & "\z"
$hSearch = FileFindFirstFile($sSrc_Dir & "\*")
While 1
$sFile_Name = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sFile_Path = $sSrc_Dir & "\" & $sFile_Name
If StringInStr(FileGetAttrib($sFile_Path), "D") > 0 Then
_File_xCopy($sFile_Path, $sDst_Dir & "\" & $sFile_Name, _
$sFile_Filter, $sFile_Prefix, $iReplace, $iOnlyNew, $iExclIncl_Mode)
$iRet_Extended += @extended
Else
If ($iExclIncl_Mode = 0 And StringRegExp($sFile_Name, $sRegExp_Filter)) Or _
($iExclIncl_Mode = 1 And Not StringRegExp($sFile_Name, $sRegExp_Filter)) Then
If $iOnlyNew = 1 Then
$iSrc_FileTime = FileGetTime($sFile_Path, 0, 1)
$iDst_FileTime = FileGetTime($sDst_Dir & "\" & $sFile_Prefix & $sFile_Name, 0, 1)
If $iSrc_FileTime <= $iDst_FileTime Then ContinueLoop
EndIf
$iRet_Extended += FileCopy($sFile_Path, $sDst_Dir & "\" & $sFile_Prefix & $sFile_Name, $iReplace)
EndIf
EndIf
WEnd
Return SetExtended($iRet_Extended, FileClose($hSearch))
EndFunc