Chilkat распаковывает файлы только из корневого каталога

#filter #unzip #chilkat

#Фильтр #распакуйте #chilkat

Вопрос:

 zip.UnzipMatching("qa_output","*.xml",true)
  

С помощью этого синтаксиса я могу распаковать каждый XML-файл в каждом каталоге из моего ZIP-файла и создать ту же структуру каталогов.

Но как я могу разархивировать только xml в корневом каталоге?

Я не могу понять, как написать фильтр. Я пробовал, "/*.xml" но ничего не извлекается. Если я пишу "*/*.xml" , я извлекаю XML-файлы только из подкаталога (и я пропускаю xml в корневом каталоге!). Кто-нибудь может мне помочь?

 example of a zip files content:
a1.xml
b1.xml
c1.xml
dir1a2.xml
dir1c2.xml
dir2dir3c3.xml
  

с unzipmatching("qa_output","*.xml", true) помощью я извлекаю все эти файлы с исходной структурой каталогов, но я хочу извлечь только a1.xml , b1.xml и c1.xml .
Есть ли способ написать filter для достижения этого результата, или другую команду, или другой подход?

Ответ №1:

Я думаю, что вы хотите вызвать UnzipMatchingInto: все файлы (соответствующие шаблону) в Zip-файле разархивируются в указанный dirPath, независимо от информации о пути к каталогу, содержащейся в Zip. Это приводит к свертыванию всех файлов в один каталог. Если несколько файлов в Zip имеют одинаковые имена, файлы, разархивированные последними, перезапишут уже разархивированные файлы.

Комментарии:

1. Нет, я отредактировал свой вопрос, чтобы добавить краткий пример. Если я использую UnzipMatchingInto, я также извлеку a2.xml , c2.xml , и c3.xml это мне не нужно. Я хочу извлекать только XML-файлы, которые находятся в корне ZIP-файлов.

2. Вы можете сделать это: (C #) example-code.com/csharp/unzip_by_iterating_over_entries.asp (C ) example-code.com/cpp/unzip_by_iterating_over_entries.asp (VB6) example-code.com/vb6/unzip_by_iterating_over_entries.asp и т.д..