Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск файлов в подпапках и их последующее копирование

Ответить
Настройки темы
[решено] Поиск файлов в подпапках и их последующее копирование
D_Master


Сообщения: n/a

Профиль | Цитировать


Подскажите, пожалуйста, как можно найти все txt-файлы в определенной папке (желательно бы по маске имени, дабы не задеть ненужные - файлы имеют названия типа log.%DATE%.txt)[/off] и её подпапках, скопировать в стороннюю папку и добавить в начало всех исходных файлов слово "Скопировано"?

Буду рад любым безумным идеям

Отправлено: 21:34, 09-02-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Например так:

Код: Выделить весь код
;8 это чтобы создать папку если не существует, 1 это перезапись файлов
$iRet = _FilesCopy_Proc("C:\Source", "C:\Dest", "log.*.txt", "Скопировано_", 8+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 _FilesCopy_Proc($sSrc_Dir, $sDst_Dir, $sFile_Filter, $sFile_Prefix="", $iReplace=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

    $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
            _FilesCopy_Proc($sFile_Path, $sDst_Dir, $sFile_Filter, $sFile_Prefix, $iReplace)
            $iRet_Extended += @extended
        Else
            If StringRegExp($sFile_Name, $sRegExp_Filter) Then _
                $iRet_Extended += FileCopy($sFile_Path, $sDst_Dir & "\" & $sFile_Prefix & $sFile_Name, $iReplace)
        EndIf
    WEnd

    Return SetExtended($iRet_Extended, FileClose($hSearch))
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:52, 09-02-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

D_Master


Сообщения: n/a

Профиль | Цитировать


Creat0R, супер, спасибо!!
Я чуть-чуть не так выразился - слово "Скопировано" надо было добавить в содержимое файла, т.е., открыть его для записи и написать туда В принципе, с переименованием даже лучше, но был бы признателен, если бы показали пример такого действия

Отправлено: 04:22, 10-02-2009 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата D_Master:
слово "Скопировано" надо было добавить в содержимое файла »
Как новую строку?

Вот так примерно:

Код: Выделить весь код
;8 это чтобы создать папку если не существует, 1 это перезапись файлов
$iRet = _FilesCopy_Proc("C:\Source", "C:\Dest", "log.*.txt", "Скопировано", 8 + 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 _FilesCopy_Proc($sSrc_Dir, $sDst_Dir, $sFile_Filter, $sFile_Prefix = "", $iReplace = 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, $iFile_Copied, $sFile_Read, $hFile_Open

    $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
            _FilesCopy_Proc($sFile_Path, $sDst_Dir, $sFile_Filter, $sFile_Prefix, $iReplace)
            $iRet_Extended += @extended
        Else
            If StringRegExp($sFile_Name, $sRegExp_Filter) Then
                $iFile_Copied = FileCopy($sFile_Path, $sDst_Dir & "\" & $sFile_Name, $iReplace)
                $iRet_Extended += $iFile_Copied

                If $iFile_Copied Then
                    $sFile_Read = FileRead($sDst_Dir & "\" & $sFile_Name)

                    $hFile_Open = FileOpen($sDst_Dir & "\" & $sFile_Name, 2)
                    FileWrite($hFile_Open, $sFile_Prefix & @CRLF & $sFile_Read)
                    FileClose($hFile_Open)
                EndIf
            EndIf
        EndIf
    WEnd

    Return SetExtended($iRet_Extended, FileClose($hSearch))
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 04:48, 10-02-2009 | #4

D_Master


Сообщения: n/a

Профиль | Цитировать


Creat0R, самое оно!! Спасибо большое, не в первый раз выручаете!

Отправлено: 07:32, 10-02-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск файлов в подпапках и их последующее копирование

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск каталога и копирование всего его содержимого desk Скриптовые языки администрирования Windows 4 01-07-2009 14:28
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк Sestrichka AutoIt 14 02-04-2009 16:51
Доступ - [решено] Копирование файлов из XP в Vista cleverkid Microsoft Windows Vista 2 01-11-2008 11:19
Разное - [решено] поиск файлов zai Microsoft Windows 2000/XP 20 07-10-2007 14:18
[решено] Копирование файлов при загрузке ОС Coutty Microsoft Windows 2000/XP 9 02-05-2007 19:25




 
Переход