powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как просканировать папку с архивами?
31 сообщений из 31, показаны все 2 страниц
Как просканировать папку с архивами?
    #37613603
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Поставили задачу -
Нужно просканировать каталог с файлами: Если это обычный файл, то скопировать его в папку с именем этого файла, если это архив, то распаковать в папку с именем архива, просмотреть эту папку на наличие ещё архивов и если они там есть, опять же распаковать и их, и т.д. На сегодняшний день максимальная вложенность архивав равна 3. Распаковку необходимо вести с помощью WinRAR.
Подскажите, как лучше решить эту задачу?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37613636
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
adir()
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37613752
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37613841
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dag заполнение Adir из подпапок
Меня больше интересует - как определить является ли файл архивом и как в таком случае использовать WinRAR?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37613898
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_Пкак определить является ли файл архивомчем-либоЛибо по расширению, либо по сигнатуре. Касательно второго - гугел в помощь, это уже не совсем по фоксу вопрос.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617118
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirлибо по сигнатуре. Попробовал, нормально. А сигнатура ZIP-архива совпадает с сигнатурой WORD 2010... :)
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617122
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_Пtanglirлибо по сигнатуре. Попробовал, нормально. А сигнатура ZIP-архива совпадает с сигнатурой WORD 2010... :)потому что (внезапно) это и есть зип-архив, только с другим расширением и определённым набором объектов внутри :)
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617132
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirпотому что (внезапно) это и есть зип-архив, только с другим расширением и определённым набором объектов внутри :) И как же программно его открыть Word-ом, а не распаковывать архиватором если расширение может быть любым?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617145
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П, посмотреть, что внутри - если там структура директорий/файлов похожа на то, что находится внутри документа ворд2010 - открывать как ворд. Но опять же - при чём тут фокс?
PS. А что, у вас там много извращенцев, которых хлебом не корми, дай поменять расширение?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617156
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_Пtanglirлибо по сигнатуре. Попробовал, нормально. А сигнатура ZIP-архива совпадает с сигнатурой WORD 2010... :)Ибо его файлы и есть архивы. Это не совпадение сигнатур, это и есть архивы, только такие, которые не надо распаковывать.
Но, вроде бы, речь шла про RAR? Или им все будем распаковывать?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617633
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirА что, у вас там много извращенцев, которых хлебом не корми, дай поменять расширение? Это бланки, в их расширении содержится признак документа.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617700
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey SizovНо, вроде бы, речь шла про RAR? Или им все будем распаковывать? Файл может быть либо документом, либо архивом внутри которого содержатся несколько документов. Если это один файл, то его нужно будет открыть соответствующей программой, а если это архив, то его сначала распаковать, а затем уже открывать.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37617749
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П,

Много букав и все не по делу. Что конкретно не получается?
Не можешь определить как файл открывать?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37618059
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_ПtanglirА что, у вас там много извращенцев, которых хлебом не корми, дай поменять расширение? Это бланки, в их расширении содержится признак документа.если у вас есть расширения, зачем городить огород с сигнатурами?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37618248
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, Dima T
Ещё раз!!! В каталоге есть файлы - обычные и архивы. Название файлов могут быть разные (например -> ZT4452.D18). Мне нужно осуществить поиск в каждом файле этого каталога. Так как они могут быть doc, rtf, xls и др., я буду открывать их каждый своей программой и там, выполняя макросы в FoxPro, осуществлять поиск. Если это архив, я сначала должен его распаковать и затем делать поиск.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37618290
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П,

алко-ритм:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
для каждого файла:
если у файла  расширение  как у документа/таблицы/чего_угодно_что_вам_известно (кроме архивов)
 то открыть соотв. программой (или, судя по стартпосту, куда-то скопировать)
 иначе если  расширение  не совпадает ни с одним из известных типов или это архив
  то проверить  сигнатуру 
   если это архив, распаковать его и вернуться к п.1
   иначе пропустить(и залогировать)

Устроит?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37618461
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_Пtanglir, Dima T
Ещё раз!!! В каталоге есть файлы - обычные и архивы. Название файлов могут быть разные (например -> ZT4452.D18). Мне нужно осуществить поиск в каждом файле этого каталога. Так как они могут быть doc, rtf, xls и др., я буду открывать их каждый своей программой и там, выполняя макросы в FoxPro, осуществлять поиск. Если это архив, я сначала должен его распаковать и затем делать поиск.
Хранилище этих файлов откуда-то взялось? Как-то это сейчас работает? Не верю что сначала тупо генерится имя, а потом всякой эвристикой надо определить исходный формат. Тут либо проектировщик той системы идиот, либо ты что-то недоговариваешь или недопонимаешь.

Определить формат файла достаточно сложно по содержимому. Надо писать анализатор файла который должен учитывать особенности анализируемых форматов.

Архивы можно определить т.к. начинаются с конкретной сигнатуры.
Берешь первые несколько байт файла и определяешь:
RAR - "Rar!"
ZIP - "PK"

Только есть извращенные форматы: DOCX это XML документ в ZIP архиве. Начинается с "PK", не имея расширения по простому их не отличить от ZIP-архива.

В общих словах я тебе написал, если надо конкретные ответы с кодом - задавай более конкретные вопросы.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37626270
Питон33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача сводится к юзанью функции ADIR()
Распаковать можно при помощи RAR.EXE для DOS.
Далее разбор папок и файлов снова при помощи ADIR().
Но надо как то контролировать ожидание окончания чтобы RAR отработал полностью.
Можно попробовать слепить проверку запущенного процесса. Если RAR запущен то ожидать.
А ещё лучше решить задачу организационно, чтобы не делать мартышкин труд, можно с начальством перетереть и задача упростится :)
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37626680
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Питон33,

С ADIR()-ом проблем нет, сейчас разбираюсь с сигнатурами. Найти нормальную информацию по этому поводу в Net-е оказывается не так просто. К тому же сигнатуры Word и Excel тоже одинаковые.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37626706
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Макс_П
> К тому же сигнатуры Word и Excel тоже одинаковые.

И совпадают с зипом
Напоминаю:
Начиная с 2007 офиса файлы ворда и екселя(не знаю за остальные офисные приложения) представляют собой _АРХИВ_ с
внутренней структурой.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37628976
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как избежать мелькание doc-окна при вызове внешней программы архиватора?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37628987
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П,

А как вызываешь?
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37629014
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGМакс_П,

А как вызываешь?
! C:\Progra~1\WinRAR\WinRAR.exe x -r -y &q1 &q2
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37629035
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П,

Попробуй своё подставить

a = ALLTRIM(namefile)
WshShell = CREATEOBJECT("WScript.Shell")
lcCommand = "&PathForm\SCANER\mspview.exe '&a'"
*!* Первый параметр - запускаемая программа (командная строка, если надо)
*!* Второй - 0 - скрытое окно, 5 - нормальное окно, 2,3,6 и т.д.
*!* Третий = .T. - ожидание завершения, .F. - не ждет завершения
WshShell.RUN(lcCommand, 5, .F.)
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37629266
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG, это то что надо! Спасибо!
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37634965
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как полностью удалить объект?
Я делаю так:

loWord = CREATEOBJECT("Word.Application")
loWordDoc = loWord.Documents.Open(q1)
loWordDoc.Close()
RELEASE loWord

Но в Диспетчере задач WinWord.exe остаётся.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37634981
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как полностью удалить объект!
Я делаю так:

loWord = CREATEOBJECT("Word.Application")
loWordDoc = loWord.Documents.Open(q1)
loWordDoc.Close()
RELEASE loWord

Но в диспетчере задач WinWord.exe остаётся.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37634995
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Макс_П

Забыл сделать
> loWordDoc.Close()
loWordDoc.Quit()
> RELEASE loWord


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37635121
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь ГорбоносloWordDoc.Quit()
Пишет OLE error code 0x80010108: Вызванный объект был отключен от клиента.
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37635180
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Макс_П
> Пишет OLE error code 0x80010108: Вызванный объект был отключен от клиента.

Пардон, выход нужно делать объекту Word, а я написал объекту Документ.
> loWordDoc.Close()

loWord.Quit()

> RELEASE loWord


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как просканировать папку с архивами?
    #37635303
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,

Работает! Спасибо!
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как просканировать папку с архивами?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]