Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] При копировании исключить файлы определенного типа (http://forum.oszone.net/showthread.php?t=283490)

support23 11-06-2014 13:30 2362860

При копировании исключить файлы определенного типа
 
Доброго дня!
Казалось бы простой вопрос, но не могу найти решение: как исключить файлы определенного типа при копировании (например *.zip) ?

madmasles 11-06-2014 16:50 2362922

support23,
Вы покажите код, которым Вы копируете файлы.

support23 12-06-2014 13:56 2363250

Копировать планировал через DirCopy, но у функции отсутствуют необходимый мне параметр

madmasles 12-06-2014 15:16 2363282

support23,
Получайте содержимое папок в массив (несколько вариантов решения), в цикле копируйте файлы (несколько вариантов решения), проверяя их на расширение. Все зависит от конкретной задачи.

support23 14-06-2014 18:47 2364054

вот что получилось в итоге:

Код:

#NoTrayIcon
#include <Array.au3>
#Include <FileOperations.au3>

$sPath = "E:\test\source"
if Not FileExists($sPath) then
MsgBox(64, "Ошибка", "Не найден каталог: " & @CRLF & $sPath)
Exit
EndIf

$dPath = "C:\test\destination"
if Not FileExists($dPath) then
DirCreate($dPath)
EndIf

$Level = 5                    ; уровень вложенности каталогов
$Exclude = "*.zip|*.7z"        ; исключить файлы с расширением zip и 7z



$a1FileList = _FO_FileSearch($sPath, $Exclude, False, 0, 1, 1, 0)
For $i=1 To $a1FileList[0]
FileCopy($a1FileList[$i], $dPath)
Next

$aFolderList = _FO_FolderSearch($sPath, "*", True, $Level, 0, 1, 0)
For $i=1 To $aFolderList[0]
DirCreate($dPath & "\" & $aFolderList[$i])

    $a2FileList = _FO_FileSearch($sPath & "\" & $aFolderList[$i], $Exclude, False, 0, 1, 1, 0)
    For $j=1 To $a2FileList[0]
    FileCopy($a2FileList[$j], $dPath & "\" & $aFolderList[$i])
    Next

Next

Exit


madmasles 14-06-2014 20:22 2364081

support23,
Если объем копирования большой, то посмотрите еще здесь: Копируем файлы без "тормозов"

support23 15-06-2014 12:32 2364228

спасибо, большой объем как раз я уже и исключил (исключив архивы zip и 7z), вопрос можно считать закрытым.

madmasles 15-06-2014 13:18 2364235

support23,
Еще можно проверять наличие в папке файлов с определенным расширением (если, конечно, в этой папке нет вложенных папок).
Код:

Local $sDir = @ScriptDir & '\Google_Translator', $sExclude = '*.zip|*.7z', $aExclude, $fExist

$aExclude = StringSplit($sExclude, '|')

;~ ...
$fExist = False
For $i = 1 To $aExclude[0]
    If FileExists($sDir & '\' & $aExclude[$i]) Then
        $fExist = True
        ExitLoop
    EndIf
Next
ConsoleWrite($sExclude & ' -> ' & $fExist & @LF)
If $fExist Then
;~    ... Ваш вариант
Else
;~    DirCopy() или по другому
EndIf



Время: 10:26.

Время: 10:26.
© OSzone.net 2001-