Как я могу извлечь один файл / папку из zip-файла? - PullRequest
0 голосов
/ 31 мая 2019

По сути, аналогично приложенному сценарию, я хочу иметь возможность извлечь файл или папку, которая находится в zip-файле. Однако я хочу добиться этого без сторонних инструментов, а также совместимости со старыми версиями Windows (2000 или хотя бы XP). Я предполагаю, что это будет означать, что только объекты Shell («Shell.Application») могут быть использованы, чтобы попытаться реализовать это? И если да, то как?

Я искал другой способ сделать это с помощью Ionic.Zip ... но для этого требуется версия .Net, которую могут иметь не все более старые версии Windows.

Вот сценарий разархивирования, который я использую (находится по адресу здесь ):

'The location of the zip file.
ZipFile="C:\Test.Zip"
'The folder the contents should be extracted to.
ExtractTo="C:\Test\"

'If the extraction location does not exist create it.
Set fso = CreateObject("Scripting.FileSystemObject")
If NOT fso.FolderExists(ExtractTo) Then
   fso.CreateFolder(ExtractTo)
End If

'Extract the contants of the zip file.
set objShell = CreateObject("Shell.Application")
set FilesInZip=objShell.NameSpace(ZipFile).items
objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)
Set fso = Nothing
Set objShell = Nothing

Например, zip-файл с именем «resources.zip», и в этом zip-файле находился файл с именем «a.txt» и папка с именем «b», а внутри «b» был файл с именем «c» .txt».

Если я попытался извлечь «a.txt» из «resource.zip», я должен был найти его в каталоге «Test», и если я попытался извлечь «b» из «resource.zip», у меня должен быть новая папка 'b' в каталоге Test с файлом "c.txt" внутри нее.

...