我在以下位置/ aaa / bbb / ccc中有一个example.7z zip文件。我需要在同一位置提取该zip文件。我尝试了很多方法,但无法获得正确的输出。请帮帮我。提前致谢!
use strict ;
use warnings ;
use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
use IO::File ;
my $input = '/aaa/bbb/ccc/example.7z';
my $zip = (split(/\//, $input))[-1]; #to extract the example.7z
my $buffer = '/aaa/bbb/ccc/';
unzip $zip => \$buffer
or die "unzip failed: $UnzipError\n"
我尝试过这种方法。这个例子.7z zip文件包含三个.BIN文件。我需要提取它们。目前我在该位置得到任何输出。
我建议你使用Archive::SevenZip
模块。
我通过阅读文档和做一些实验来想出这段代码。
use strict;
use warnings 'all';
use Archive::SevenZip;
my $ar = Archive::SevenZip->new(
archivename => "YourArchive.7z",
find => 1,
);
for my $entry ( $ar->list ) {
next unless $entry->{Attributes} =~ /^A/;
my $target = join "/", "YourExtractedFolderName", $entry->basename;
$ar->extractMember( $entry->fileName, $target );
}
所有文件都被提取到文件夹的根目录,因为我测试$entry
是否是一个文件($entry->{'Attributes'}
是文件的A
和目录的D
)。知道这一点,您可以通过修改我的代码来提取文件夹。
您还应检查存档是否存在,否则将返回错误。