Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "FileCopy", в содержании - "File, Directory and Disk Management" - "FileCopy", v1.0.46.09.

Ник переводчика: YMP.

Настоящее имя переводчика: Юрий Попов.

FileCopy

Копирует один или несколько файлов.

FileCopy, SourcePattern, DestPattern [, Flag]

Параметры

SourcePattern Источник. Имя файла или папки, либо шаблон, такой как C:\Temp\*.tmp. Если не задан полный путь, SourcePattern ищется в папке, указанной в переменной A_WorkingDir.
DestPattern Приёмник. Имя или шаблон. Если не задан полный путь, используется папка, указанная в переменной A_WorkingDir. В случае простого копирования - с сохранением прежних имён файлов - указывайте только имя папки, как показано в этих, функционально идентичных, примерах:
FileCopy, C:\*.txt, C:\My Folder
FileCopy, C:\*.txt, C:\My Folder\*.*
Flag Флаг (необязателен). Этот флаг определяет, переписывать ли файлы, если они уже существуют.

0 = (по умолчанию) не переписывать существующие файлы
1 = переписывать

Этот параметр может быть выражением, даже таким, которое расценивается как true (истина) или false (ложь) (поскольку эти значения хранятся в виде 1 и 0).

ErrorLevel

Содержит число файлов, которые не удалось скопировать из-за ошибок, иначе равен 0. Скрипты AutoIt v2 (.aut) устанавливают ErrorLevel в 1, если какие-то файлы не удалось скопировать.

В обоих случаях, если источник - одиночный файл (не шаблон) и если он не существует, ErrorLevel устанавливается в 0. Чтобы отследить такую ситуацию, используйте IfExist или FileExist() для проверки существования файла-источника перед его копированием.

В отличие от FileMove, копирование файла в самого себя всегда расценивается как ошибка, даже если разрешена перезапись файлов.

Примечания

FileCopy копирует только файлы. Как можно скопировать содержимое папки (все файлы и подпапки в ней), смотрите в разделе примеров ниже. Чтобы скопировать одиночную папку (включая её подпапки), используйте команду FileCopyDir.

Операция копирования продолжается, даже если происходят ошибки.

Примеры

FileCopy, C:\My Documents\List1.txt, D:\Main Backup\ ; Копирование с сохранением оригинальных имён файлов.
FileCopy, C:\My File.txt, C:\My File New.txt ; Копирование файла в ту же папку под новым именем.
FileCopy, C:\Folder1\*.txt, D:\New Folder\*.bkp ; Копирование в другое место и с другим расширением. 

; Следующий пример копирует все файлы и папки внутри папки в другую папку.
; Прим. переводчика: папка-приёмник уже должна существовать.
ErrorCount := CopyFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders")
if ErrorCount <> 0
    MsgBox %ErrorCount% файлов/папок не удалось скопировать.

CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
; Копирует все файлы и папки, совпадающие с заданными в SourcePattern в папку, чьё имя указано
; в DestinationFolder и возвращает количество файлов/папок, которые не удалось скопировать.
{
    ; Сначала копируем все файлы (но не папки):
    FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
    ErrorCount := ErrorLevel
    ; Теперь копируем все папки:
    Loop, %SourcePattern%, 2 ; 2 означает "возвращать только папки".
    {
        FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
        ErrorCount += ErrorLevel
        if ErrorLevel ; Сообщать о каждой проблемной папке.
            MsgBox Не удалось скопировать %A_LoopFileFullPath% в %DestinationFolder%.
    }
    return ErrorCount
}

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.