Как читать содержание a.zip файл с VBScript без фактического извлечения файлов?
у меня есть .zip-файл, который начинается с родительского каталога. Мне нужно прочитать этот dir из файла, а затем искать мой HD, чтобы узнать, существует ли это имя dir. Если он существует, я затем удаляю его и заменяю его содержимое.сжатый файл.
все это я могу сделать, кроме как читать .молния без распаковки файла.
The .zip-файл может быть больше 2G по размеру, поэтому я хочу избежать распаковки, затем чтения dir, а затем копирования.
причина I не просто распаковать непосредственно в место и принудительно перезаписать это по какой-то причине при использовании CopyHere
метод для распаковки, он игнорирует переключатели, которые обычно заставляют перезаписывать и все еще запрашивает пользователя, если они хотят перезаписать.
код для распаковки файлов:
Set objSA = CreateObject("Shell.Application")
Set objSource = objSA.NameSpace(pathToZipFile).Items ()
Set objTarget = objSA.NameSpace(extractTo)
objTarget.CopyHere objSource,4
4 ответов
предполагая, что вы можете использовать внешнее приложение, попробуйте скачать в 7-Zip а затем ваш скрипт выполнит его с помощью -l
переключатель. Это должно дать вам некоторый результат, который вы должны каким-то образом проанализировать.
пример из файла справки:7z l archive.zip
вот аналогичный вопрос по SO.
как перечислить содержимое a .zip-папка на c#?
Я сам пользовался этой библиотекой. Это хорошо работает,http://dotnetzip.codeplex.com/, есть даже пример treeview, который, похоже, читает zip без извлечения.
вам понадобятся библиотеки DLL на сервере, но я бы не сказал, что вам нужно установить них. ;)
Я не уверен, что можно прочитать содержимое zip без его извлечения.
Если вы просто пытаетесь избежать трудоемкой операции копирования данных, вы можете попробовать распаковать в временный каталог, а затем использовать функцию "переместить". Перемещение обычно занимает меньше времени, чем копирование, поскольку оно фактически не перезаписывает данные на диске. Он просто обновляет файловую систему, чтобы указать, где находятся данные.