|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск файлов в подпапках и их последующее копирование |
|
[решено] Поиск файлов в подпапках и их последующее копирование
|
D_Master
Сообщения: n/a |
Подскажите, пожалуйста, как можно найти все txt-файлы в определенной папке (желательно бы по маске имени, дабы не задеть ненужные - файлы имеют названия типа log.%DATE%.txt)[/off] и её подпапках, скопировать в стороннюю папку и добавить в начало всех исходных файлов слово "Скопировано"?
Буду рад любым безумным идеям |
|
Отправлено: 21:34, 09-02-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 22:52, 09-02-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
D_Master
Сообщения: n/a |
Creat0R, супер, спасибо!!
Я чуть-чуть не так выразился - слово "Скопировано" надо было добавить в содержимое файла, т.е., открыть его для записи и написать туда В принципе, с переименованием даже лучше, но был бы признателен, если бы показали пример такого действия |
Отправлено: 04:22, 10-02-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
|
------- Отправлено: 04:48, 10-02-2009 | #4 |
D_Master
Сообщения: n/a |
Creat0R, самое оно!! Спасибо большое, не в первый раз выручаете!
|
|
Отправлено: 07:32, 10-02-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|