【问题标题】:Using VBScript to examine properties of files within a zip file使用 VBScript 检查 zip 文件中文件的属性
【发布时间】:2015-01-15 23:38:44
【问题描述】:

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

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

有没有办法在不解压缩 zip 文件的情况下完成此操作?

【问题讨论】:

标签: vbscript zip fso


【解决方案1】:

哎呀。我从未听说过 vbscript zip 对象。但是我已经很久没有做vbscript了。有什么办法可以避免吗?

我为你做了一些谷歌搜索。我确实找到了这个:http://www.example-code.com/vbscript/zip_List.asp Chilkat 做了很多我认为不可能的事情。这给我的印象 - 你正在尝试做的事情不会是无痛的。

如果您遇到问题,我会找到与 vbscript 不同的解决方案。但如果你成功了,我会投票给你当 vb land 的市长

【讨论】:

  • 是的,我不认为这是最简单的任务。我已经看到其他一些 stackoverflow 答案提到使用命令行“-l”来列出 zip 的内容。但我不确定这到底是如何工作的。
  • 我使用 cygwin/bash 而不是 dos/command-line。它有一个列出它的 zip 内容的程序。它的输出是:“11805 08-26-2013 12:02 temp-bin/shutdown.exe”。每个文件都有一行。该程序的名称是(等待它...)'unzip'。
  • PKware 开发的 zip 文件。 Thay 在pkware.com/software/pkzip/windows 和(如果在 32 位 Windows 上)pkware.com/software/pkzip/dos 有命令行实用程序
【解决方案2】:

您可以使用壳对象来完成。但它可能会同样缓慢。如果只是名称和日期,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多