Доброго времени суток. :laugh:
Что есть:
В папке находятся группы файлов (название всегда разное - расширения .LZH, и .(S))
[spоiler]
MDP1B23.LZH - архив
- PATCH.DBF дата создания 12.01.2012 15:30
- PATCH_DEL.DBF дата создания 12.01.2012 16:30
MDP1B23.(S) - текстовый файл
УДАЛЬТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH_DEL.DBF
И ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B24.LZH
- PATCH.DBF дата создания 13.01.2012 17:30
MDP1B24.(S)
ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B25.LZH
- PATCH.DBF дата создания 14.01.2012 12:30
MDP1B25.(S)
ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B26.LZH
- PATCH.DBF дата создания 15.01.2012 15:30
- PATCH_DEL.DBF дата создания 15.01.2012 17:30
MDP1B26.(S)
УДАЛЬТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH_DEL.DBF
И ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
[/spоiler]
В архиве находятся DBF файлы (название которых известно и не меняется)
а ХХХХХХХ.(S) это описание архива и что с ним необходимо сделать.
Задача:
распаковать файлы из архивов и подлить в ALPATCH.DBF с учетом даты создания (сначала самый старый потом новее, новее и т.д.),
при необходимости удалть записи содержащиеся в PATCH_DEL.DBF из ALPATCH.DBF и только потом добавлять новые записи.
Пока удалось сделать только это
Для работы с DBF нашел древнюю программу CDBFLITE.exe (в аттаче)
(Может есть что то получше)
Подскажите правильно ли я делаю! и как дальше реализовать задуманное.
Спасибо. :(
Код подправил! А заспойлить не получается. (Будем исправляться).
Что есть:
В папке находятся группы файлов (название всегда разное - расширения .LZH, и .(S))
[spоiler]
MDP1B23.LZH - архив
- PATCH.DBF дата создания 12.01.2012 15:30
- PATCH_DEL.DBF дата создания 12.01.2012 16:30
MDP1B23.(S) - текстовый файл
УДАЛЬТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH_DEL.DBF
И ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B24.LZH
- PATCH.DBF дата создания 13.01.2012 17:30
MDP1B24.(S)
ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B25.LZH
- PATCH.DBF дата создания 14.01.2012 12:30
MDP1B25.(S)
ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
MDP1B26.LZH
- PATCH.DBF дата создания 15.01.2012 15:30
- PATCH_DEL.DBF дата создания 15.01.2012 17:30
MDP1B26.(S)
УДАЛЬТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH_DEL.DBF
И ДОБАВИТЬ ЗАПИСИ НАХОДЯЩИЕСЯ В PATCH.DBF
[/spоiler]
В архиве находятся DBF файлы (название которых известно и не меняется)
а ХХХХХХХ.(S) это описание архива и что с ним необходимо сделать.
Задача:
распаковать файлы из архивов и подлить в ALPATCH.DBF с учетом даты создания (сначала самый старый потом новее, новее и т.д.),
при необходимости удалть записи содержащиеся в PATCH_DEL.DBF из ALPATCH.DBF и только потом добавлять новые записи.
Пока удалось сделать только это
Код:
#include <File.au3>
#include <Array.au3>
#include <Process.au3>
Global $sINCatalog = @ScriptDir & '\in' ; Здесь лежат новые файлы в архивах
Global $sOUTCatalog = @ScriptDir & '\out' ; Здесь находятся распакованные файлы подготовленные для подгрузки
Global $sTMPCatalog = @ScriptDir & '\tmp' ; Здесь папка временных файлов.
$aFileList = _FileListToArray($sINCatalog, '*', 1)
For $i = 1 To UBound($aFileList) - 1
$var1 = StringRight($aFileList[$i], 9) ; выражение part1.rar
$var2 = StringRight($aFileList[$i], 10) ; выражение part01.rar
$var3 = StringRight($aFileList[$i], 4) ; отделяем расширение файла
$var4 = StringLeft($aFileList[$i], 8) ; отделяем имя файла от расширения
Select
Case ($var1 = "part1.rar" OR $var2 = "part01.rar")
_RunDOS(@ScriptDir &'\7z.exe e -y '& $sINCatalog & '\' & $aFileList[$i] & ' -o'& $sTMPCatalog); распаковываем связанный архив
Case $var3 = ".LZH"
_RunDOS('xcopy /y '& $sINCatalog & '\' & $aFileList[$i] &' '& $sTMPCatalog) ; копируем файлы по маске
_RunDOS('xcopy /y '& $sINCatalog & '\' & $var4 & '(s)' &' '& $sTMPCatalog) ; копируем файлы сопроводиловки
EndSelect
Next
$aFileListTmp = _FileListToArray($sTMPCatalog, '*', 1)
For $i = 1 To UBound($aFileListTmp) - 1
$var1 = StringRight($aFileListTmp[$i], 9) ; выражение part1.rar
$var2 = StringRight($aFileListTmp[$i], 10) ; выражение part01.rar
$var3 = StringRight($aFileListTmp[$i], 4) ; отделяем расширение файла
$var4 = StringLeft($aFileListTmp[$i], 8) ; отделяем имя файла от расширения
Select
Case $var3 = ".LZH"
_RunDOS(@ScriptDir &'\7z.exe e -y '& $sTMPCatalog & '\' & $aFileListTmp[$i] & ' -o'& $sOUTCatalog & '\' & $var4)
_RunDOS('xcopy /y '& $sTMPCatalog & '\' & $var4 & '(s)' &' '& $sOUTCatalog & '\' & $var4 & '') ; копируем файлы сопроводиловки
EndSelect
Next
Для работы с DBF нашел древнюю программу CDBFLITE.exe (в аттаче)
(Может есть что то получше)
Подскажите правильно ли я делаю! и как дальше реализовать задуманное.
Спасибо. :(
Код подправил! А заспойлить не получается. (Будем исправляться).