2015-01-15 5 views
1

VBScript를 사용하여 수백 개의 .zip 파일 내용을 검사하려고합니다. 본질적으로 내가하고 싶은 것은 각각의 .zip을 실행하고 그 zip 파일과 함께 모든 파일을 찾습니다. zip 내의 이러한 각 파일에 대해 일부 정보를 Oracle 데이터베이스에 기록하려고합니다. 그 정보는 파일 이름과 파일 수정 날짜입니다.VBScript를 사용하여 zip 파일 내의 파일 속성 검사

지금까지 필자의 해결책은 각 zip 폴더 구조를 임시 폴더로 추출한 다음 temp 폴더에서 fso 개체로 실행하는 것입니다. 그러나 이것은 매우 느린 것으로 입증되었습니다.

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를 한 이후 오랜 시간이 걸렸습니다. 어쨌든 그것을 피할 수 있습니까?

나는 당신을 위해 인터넷 검색을 수행했다. 나는 이것을 찾았다 : http://www.example-code.com/vbscript/zip_List.asp Chilkat는 내가 불가능하다고 생각했던 많은 것들을했다. 이것은 저에게 인상을줍니다. 당신이하려는 것은 고통이 없을 것입니다.

문제가있는 경우 vbscript와 다른 해결책을 찾을 수 있습니다. 그러나 만약 당신이 그것을 풀어 준다면 나는 당신이 vb 땅의 시장이되도록 투표 할 것입니다.

+0

예, 저는 아닙니다. 가장 쉬운 작업이 될 것으로 기대합니다. 나는 명령 행 "-l"을 사용하여 zip의 내용을 나열하는 다른 stackoverflow 응답을 보았다. 그러나 그것이 어떻게 작동하는지 정확히 알지 못합니다. – user2276280

+0

dos/command-line 대신 cygwin/bash를 사용합니다. 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

쉘 객체를 사용하여 그것을 할 수 있습니다. 그러나 천천히, 아마도 그렇게 될 것입니다. 이름과 날짜 탐색기 만 있으면 zip 디렉토리에서 직접 가져올 수 있습니다 (파일의 끝에 있으므로 전체 파일을 계속 읽어야합니다).

이렇게하면 폴더의 항목이 다른 폴더로 복사됩니다. zip 파일은 폴더이므로 복사하고 복사합니다.

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" 

빈 우편 만들기

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는 반전된다). (I는 FSO 텍스트 스트림보다는 ADODB 이진 스트림을 사용 할 뻔했지만 그건 문제가 안된다)

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