2015-01-15 35 views
1

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

到目前为止,我的解决方案已经被切出各拉链文件夹结构,然后通过临时文件夹与FSO对象中运行的临时文件夹。但是,这已被证明非常缓慢。

有没有办法来完成祖国这一点没有unziping的zip文件?

+0

可能重复[如何阅读使用VBScript的.zip文件的内容,而无需实际提取文件?](http://stackoverflow.com/questions/4724140/how-to-read-the-contents-of-a-zip-file-with-vbscript-without-actually-extractin) – Helen

回答

0

哎呀。我从来没有听说过vbscript zip对象。但是自从我完成了vbscript以来已经很长时间了。无论如何你可以避免它?

我为你做了一些Google搜索。我确实发现:http://www.example-code.com/vbscript/zip_List.asp奇尔卡特做了很多我认为不可能的事情。这给我的印象 - 你想做的事情不会是无痛的。

如果给你我会找到比VBScript中不同的解决方案的问题。但是,如果你拉它关闭我会投票给你是VB土地

+0

是的,我不是期待它是最简单的任务。我已经看到一些其他的计算器答案提到使用命令行“-l”来列出zip的内容。但我不确定这究竟是如何工作的。 – user2276280

+0

我使用cygwin/bash代替dos /命令行。它有一个程序,列出它的zip内容。它的输出是:“11805 08-26-2013 12:02 temp-bin/shutdown.exe”。每个文件都有一行。该程序的名称是(等待它......)'解压缩'。 – terary

+0

PKware开发的zip文件。 Thay在https://www.pkware.com/software/pkzip/windows上有命令行实用程序和(如果在32位窗口上)https://www.pkware.com/software/pkzip/dos – Serenity

0

市长你可以做到这一点在与壳牌对象的地方。但是,它可能会同样缓慢。如果名称和日期资源管理器可能直接从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