:: Не фоксом единым
Проблема с архивацией
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
На сервере ночью у меня
крутится программа,
которая делает много разных
вещей, в том числе и архивацию данных
Сначала идет копирование файлов,
потом архиваций 7z.exe --run /N ...
После копирования и между архивацией
dbf и cdx ставлю inkey
После архивации стираю файлы, что копировал
Что копирование что архивация
лежат каждый в своем блоке
try
Если не прошло копирование,
архивация не запускается
Все работает уже продолжительное время,
но иногда неизвестно почему зависает и не дает
работать оставшимся другим ночным процедурам
Поставил неделю назад run без /N
Не проверил сразу. Потом вижу, архивация не работает
Архив не создался. Смотрю лог, который программа пишет.
Копирование есть, запуск 7z есть,
стирание есть
Проверил в дебагере,
На этапе 7z появляется черное окно на долю секунды,
и архивация не идет.
Ratings: 0 negative/0 positive
Re: Проблема с архивацией
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ошибка, оставляй окно cmd открытым, что бы посмотреть, что там написано.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Проблема с архивацией
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
а если вывод в файл перенаправить, ошибку не видно?
Ratings: 0 negative/0 positive
Re: Проблема с архивацией
boba

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
пока ничего не видать
Я же их run только /N
убрал,
команда зип как была так и есть
Просто подозревал,
что даже при использовании inkey
не всегда достаточная задержка по времени,
отсутствие опции /N
должно бы по идее ждать,
пока предыдущая архивация не закончится
Ratings: 0 negative/0 positive
Re: Проблема с архивацией
TAS
Автор

Сообщений: 851
Откуда: Москва
Дата регистрации: 28.09.2000
Приветствую! Есть желание на ZIP переделать?

Когда-то брал библиотеку shm_zip2 вроде как даже с этого форума...

Там без всяких черных окон все делается...

Кидаю сюда как есть - придется убрать функции проверок...

Библиотека: cloud.mail.ru

*############################################################################################
*############################################################################################
*############################################################################################
FUNCTION ZIP_DIR && Выполнение архивации файлов директории в ZIP файл
PARAMETERS what_dir,what_file,zip_conf
* what_dir - директория для архивации
* what_file - архивировать в файл
* zip_conf - доп. конфиг.
* D - очистить рабочую директорию после архивации
* -------------------------------------------------------------------------------------------
* ? ZIP_DIR(m.work_path,m.back_file)
* -------------------------------------------------------------------------------------------
errorstr='' && внешняя переменная для описания ошибок
=ZERO_PER("zip_conf","C") && проверка переменных и их заполнение пустыми значениями
LOCAL zip_now
PRIVATE zipwork
do plakat with -1,0,0,9,rgb(255,192,192),rgb(0,0,0),'ПОДОЖДИТЕ!','','Выполняется архивация...'
SET CLASSLIB TO shm_zip2 ADDITIVE
zipwork=CREATEOBJECT('shm_zip2')
IF !EMPTY(zipwork.errormsg)
errorstr="ОШИБКА инициализации ZIP библиотеки!"
do plakat with -2
RETURN -1
ENDIF
zipwork.input_path=m.what_dir
zipwork.zipfile_name=m.what_file
zipwork.input_mask='*.*'
zipwork.xrecurs=.F.
zipwork.erase_zip=.T.
zipwork.zipdir()
IF EMPTY(zipwork.errormsg)
zip_now=1
IF "D"$m.zip_conf
=DIRPREPARE(m.what_dir,"D") && очистка рабочей директории
ENDIF
ELSE
errorstr="ОШИБКА - "+zipwork.errormsg
zip_now=-1
ENDIF
do plakat with -2
RETURN m.zip_now
*############################################################################################
*############################################################################################
*############################################################################################
FUNCTION UNZIP_FILE && распаковывает файлы с проверкой на существование файлов
PARAMETERS arh_name,dir_name,arh_files,regimfind
* arh_name - Имя файла архива
* dir_name - Папка для распаковки
* arh_files - Список файлов (если без расширения, то будет добавлено расширение DBF) через запятую.
* если arh_files не задан, то проверка наличия пропускается
* regimfind - Режим поиска для каждого файла в виде строки "010011", где 0-может отсутствовать,
* 1-должен присутствовать (при отсутствии этого параметра для всех файлов устанавливается 1!)
*--------------------------------------------------------------------------------------------
* ? UNZIP_FILE("1.zip","d:\export")
*--------------------------------------------------------------------------------------------
=zero_per("arh_files,regimfind","C,C") && проверка переменных и их заполнение пустыми значениями
*--------------------------------------------------------------------------------------------
unpack_mess='' && внешняя переменная для описания ошибок
LOCAL i,totaltkol,notfound,yetfound
PRIVATE zipwork
do plakat with -1,0,0,9,rgb(255,192,192),rgb(0,0,0),'ПОДОЖДИТЕ!','','Извлечение файлов из архива...'
SET CLASSLIB TO shm_zip2 ADDITIVE
zipwork=CREATEOBJECT('shm_zip2')
IF !EMPTY(zipwork.errormsg)
unpack_mess="ОШИБКА инициализации ZIP библиотеки!"
do plakat with -2
RETURN -1
ENDIF
*--------------------------------------------------------------------------------------------
* открываем и проверяем архив
*--------------------------------------------------------------------------------------------
With zipwork
.zipfile_name=m.arh_name
.zip_list()
IF EMPTY(.errormsg)
totaltkol=0
notfound=0
yetfound=0
FOR i=1 TO OCCURS(",",m.arh_files)+1
tempname=UPPER(GETWORDNUM(m.arh_files,m.i,","))
IF EMPTY(m.tempname)
LOOP
ENDIF
tempname=m.tempname+IIF(EMPTY(JUSTEXT(m.arh_files)),".DBF","")
unpack_mess=unpack_mess+CHR(13)+m.tempname+" -"
foundnow=0
For ki=1 To Alen(.azip,1)
IF UPPER(.azip(ki,1))=m.tempname
foundnow=1
exit
ENDIF
NEXT
IF m.foundnow=0
IF EMPTY(m.regimfind) OR SUBSTR(m.regimfind,m.i,1)="1" && не найден только если должен быть а нет!
notfound=m.notfound+1
unpack_mess=m.unpack_mess+" ОТСУТСТВУЕТ!"
ELSE
unpack_mess=m.unpack_mess+" ПРОПУЩЕН!"
ENDIF
ELSE
yetfound=m.yetfound+1
unpack_mess=m.unpack_mess+" OK!"
ENDIF
ENDFOR
IF m.notfound#0 OR (!EMPTY(m.arh_files) AND m.yetfound=0)
do plakat with -2
unpack_mess="Архив не содержит необходимых файлов!"
RETURN -3
ENDIF
ELSE
do plakat with -2
unpack_mess=unpack_mess+"ОШИБКА открытия ZIP файла!"
RETURN -2
ENDIF
Endwith
*--------------------------------------------------------------------------------------------
* Если нет, создаем папку для распаковки
*--------------------------------------------------------------------------------------------
unpack_mess=''
IF DIRPREPARE(m.dir_name,"W")=0
do plakat with -2
unpack_mess="ОШИБКА подготовки папки для распаковки!"
RETURN -4
ENDIF
*--------------------------------------------------------------------------------------------
* распаковываем весь архив в папку для распаковки
*--------------------------------------------------------------------------------------------
With zipwork
.zipfile_name=m.arh_name
.output_path=m.dir_name
.output_mask="*.*"
.safety=.F.
.xunzip()
Endwith
do plakat with -2
IF !EMPTY(zipwork.errormsg)
unpack_mess="ОШИБКА: - "+ALLTRIM(zipwork.errormsg)
RETURN -5
ENDIF
RETURN 1
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика