使用VBScript检查zip文件中的文件属性

时间:2015-01-15 23:38:45

标签: vbscript zip fso

我正在尝试使用VBScript检查数百个.zip文件的内容。基本上我想要做的是运行每个.zip并找到该zip文件的所有文件。对于zip中的每个文件,我想将一些有关它的信息记录到Oracle数据库中。该信息是:文件名和文件修改日期。

到目前为止,我的解决方案已经将每个zips文件夹结构提取到临时文件夹,然后使用fso对象在temp文件夹中运行。然而,事实证明这是非常缓慢的。

有没有办法在不解压缩zip文件的情况下实现这个目标?

2 个答案:

答案 0 :(得分:0)

哎哟人我从来没有听说过vbscript zip对象。但是自从我做了vbscript以来已经有很长一段时间了。无论如何你可以避免它吗?

我为你做了一些谷歌搜索。我确实找到了这个:http://www.example-code.com/vbscript/zip_List.asp奇尔卡特做了很多我认为不可能的事情。这让我印象深刻 - 你要做的事情不会是无痛的。

如果遇到问题,我会找到与vbscript不同的解决方案。但如果你拉开它,我会投票给你成为vb land的市长

答案 1 :(得分:0)

您可以使用Shell Objects完成此操作。但也许会慢一点。如果只是名称和日期资源管理器可以从zip目录直接获取它(在文件的末尾,所以仍然需要读取整个文件)。

这会将文件夹中的项目复制到另一个文件夹。 zip文件是一个文件夹,因此它将被复制并复制出来。

To 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"

创建空白zip。 (我应该使用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