2015-01-15 2 views
1

Я пытаюсь использовать VBScript для изучения содержимого нескольких сотен ZIP-файлов. По существу, что я хочу сделать, пропустите через каждый .zip и найдите все файлы с этим zip-файлом. Для каждого из этих файлов в zip я хочу записать некоторую информацию об этом в базу данных Oracle. Эта информация: имя файла и дата изменения файла.Использование VBScript для проверки свойств файлов в zip-файле

До сих пор мое решение извлекало каждую структуру папок в папку временных файлов, а затем запускало временную папку с объектом fso. Однако это оказалось очень медленным.

Есть ли способ сделать это без распаковки zip-файлов?

+0

возможно дубликат [Как прочитать содержимое ZIP-файла с помощью VBScript, фактически извлечения файлов ?] (http://stackoverflow.com/questions/4724140/how-to-read-the-contents-of-a-zip-file-with-vbscript-without-actually-extractin) – Helen

ответ

0

Ouch человек. Я никогда не слышал об объекте zbscript. Но прошло уже много времени с тех пор, как я сделал vbscript. В любом случае вы можете избежать этого?

Я сделал несколько поисковых запросов для вас. Я нашел это: http://www.example-code.com/vbscript/zip_List.asp Чилкат сделал много чего, я думал, что это невозможно. Это создает впечатление, что то, что вы пытаетесь сделать, не будет безболезненным.

Если у вас есть проблема, у меня есть другое решение, чем vbscript. Но если вы потянете, я проголосую за то, чтобы вы были мэром vb land

+0

Да, я не ожидая, что это будет самая легкая задача. Я видел, как некоторые другие ответы stackoverflow упоминают использование командной строки «-l» для отображения содержимого zip. Но я точно не знаю, как это будет работать. – user2276280

+0

Я использую cygwin/bash вместо dos/command-line. У этого есть программа, которая перечисляет это содержание zip. Его выход: «11805 08-26-2013 12:02 temp-bin/shutdown.exe». Для каждого файла есть строка. Название программы (дождитесь ее ...) «unzip». – terary

+0

PKware разработал ZIP-файлы. У Thay есть утилиты командной строки на https://www.pkware.com/software/pkzip/windows и (если на 32-битных окнах) https://www.pkware.com/software/pkzip/dos – Serenity

0

Вы можете сделать это на месте с объектами Shell. Возможно, это будет так же медленно. Если только имя и дата Explorer могут получить это прямо из zip-каталога (в конце файла, поэтому весь файл все равно нужно прочитать).

Это копирует элементы в папку в другую папку. Почтовый файл представляет собой папку, в которой он будет копироваться и копироваться.

Для Zip

Set objShell = CreateObject("Shell.Application") 
Set Ag=Wscript.Arguments 
set WshShell = WScript.CreateObject("WScript.Shell") 

Set SrcFldr=objShell.NameSpace(Ag(1)) 
Set DestFldr=objShell.NameSpace(Ag(0)) 
Set FldrItems=SrcFldr.Items 
DestFldr.CopyHere FldrItems, &H214 
Msgbox "Finished" 

разархивировать (примечание SrcFolder и DestFolder перепутаны)

Set objShell = CreateObject("Shell.Application") 
Set Ag=Wscript.Arguments 
set WshShell = WScript.CreateObject("WScript.Shell") 

Set DestFldr=objShell.NameSpace(Ag(1)) 
Set SrcFldr=objShell.NameSpace(Ag(0)) 
Set FldrItems=SrcFldr.Items 
DestFldr.CopyHere FldrItems, &H214 
Msgbox "Finished" 

создать пустой почтовый индекс. (Я должен использовать двоичный поток ADODB, а не текстовый поток FSO, но это не имеет значения)

Set Ag=Wscript.Arguments 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ts = fso.OpenTextFile(Ag(0), 8, vbtrue) 
BlankZip = "PK" & Chr(5) & Chr(6) 
For x = 0 to 17 
    BlankZip = BlankZip & Chr(0) 
Next 
ts.Write BlankZip 
Смежные вопросы