7Zip 从 2 个不同的子文件夹中执行 2 次提取(仅第一次执行)
7Zip execute 2 extractions from 2 different subfolders (only first executes)
好吧,我完全不知所措了。
我正在尝试从 7zip 文件中提取所有 XMLs 和 PDF。
所述文件中还有更多内容,所以我只想从 PDF 文件夹和 XML 文件夹中提取。保留文件结构,不在任何其他文件夹中搜索。
我正在使用 7Zip 命令行来执行此操作。
我执行了两个几乎相同的子例程。
sub Extract_pdfs_from_this
{
my ($file, $destination) = @_;
my $sevenzip_executable = '\\server-Zipz.exe';
my $extract_pdfs = "$sevenzip_executable e -y -o$destination $file output\JETPDF\DISB\*.pdf ";
print STDOUT "\n\nExtracting PDFs From $file \n>>$extract_pdfs \n";
eval{system($extract_pdfs)};
print STDOUT "Finished Extracting PDFs \n";
return;
}
..
sub Extract_xmls_from_this
{
my ($file, $destination) = @_;
my $sevenzip_executable = '\\server-Zipz.exe';
my $extract_xmls = "$sevenzip_executable e -y -o$destination $file staging\DISB\OnBase\*.xml ";
print STDOUT "\n\nExtracting XMLs From $file \n>>$extract_xmls \n";
eval{system($extract_xmls)};
print STDOUT "Finished Extracting XMLs \n";
return;
}
我也是这样用的...
my $in_extraction_directory = dirname(__FILE__);
my $input_subdirectory = "$directory\$subdirectory";
my @in_seven_zip_files = Get_all_sevenzips_in($input_subdirectory);
foreach my $sevenzip_file (@in_seven_zip_files)
{
$sevenzip_file = "$input_subdirectory\$sevenzip_file";
Extract_pdfs_from_this($sevenzip_file, $in_extraction_directory);
Extract_xmls_from_this($sevenzip_file, $in_extraction_directory);
}
执行时提取 PDF,但不提取 XML。
我得到一个错误,没有要处理的文件。
我感觉 7zip 挂在了上次调用的文件上。有没有办法关闭它或释放文件?
感谢任何帮助,在此浪费了很多时间。
谢谢!
检查退出状态 $?
,如果您觉得它已挂起。
您也可以尝试先提取 xml,然后再提取 pdf,以确保提取 pdfs 命令是否有问题。
共享控制台输出,可以显示更多细节。
用户错误...正常工作。
我有一个条件:
unless ($number_of_pdfs == $number_of_xmls)
{
print STDOUT "The number of PDFs and XMLs did not match!\n\n";
print STDOUT "PDFs: $number_of_pdfs \nXMLs: $number_of_xmls\nFile: $sevenzip_file \nExtraction Directory: $output_directory\n\n";
die;
}
并且在我提取的第一个文件中,XML 不在正确的路径中......有人没有遵循模式。非常尴尬感谢您的回应。
好吧,我完全不知所措了。
我正在尝试从 7zip 文件中提取所有 XMLs 和 PDF。 所述文件中还有更多内容,所以我只想从 PDF 文件夹和 XML 文件夹中提取。保留文件结构,不在任何其他文件夹中搜索。
我正在使用 7Zip 命令行来执行此操作。
我执行了两个几乎相同的子例程。
sub Extract_pdfs_from_this
{
my ($file, $destination) = @_;
my $sevenzip_executable = '\\server-Zipz.exe';
my $extract_pdfs = "$sevenzip_executable e -y -o$destination $file output\JETPDF\DISB\*.pdf ";
print STDOUT "\n\nExtracting PDFs From $file \n>>$extract_pdfs \n";
eval{system($extract_pdfs)};
print STDOUT "Finished Extracting PDFs \n";
return;
}
..
sub Extract_xmls_from_this
{
my ($file, $destination) = @_;
my $sevenzip_executable = '\\server-Zipz.exe';
my $extract_xmls = "$sevenzip_executable e -y -o$destination $file staging\DISB\OnBase\*.xml ";
print STDOUT "\n\nExtracting XMLs From $file \n>>$extract_xmls \n";
eval{system($extract_xmls)};
print STDOUT "Finished Extracting XMLs \n";
return;
}
我也是这样用的...
my $in_extraction_directory = dirname(__FILE__);
my $input_subdirectory = "$directory\$subdirectory";
my @in_seven_zip_files = Get_all_sevenzips_in($input_subdirectory);
foreach my $sevenzip_file (@in_seven_zip_files)
{
$sevenzip_file = "$input_subdirectory\$sevenzip_file";
Extract_pdfs_from_this($sevenzip_file, $in_extraction_directory);
Extract_xmls_from_this($sevenzip_file, $in_extraction_directory);
}
执行时提取 PDF,但不提取 XML。 我得到一个错误,没有要处理的文件。
我感觉 7zip 挂在了上次调用的文件上。有没有办法关闭它或释放文件?
感谢任何帮助,在此浪费了很多时间。
谢谢!
检查退出状态 $?
,如果您觉得它已挂起。
您也可以尝试先提取 xml,然后再提取 pdf,以确保提取 pdfs 命令是否有问题。
共享控制台输出,可以显示更多细节。
用户错误...正常工作。 我有一个条件:
unless ($number_of_pdfs == $number_of_xmls)
{
print STDOUT "The number of PDFs and XMLs did not match!\n\n";
print STDOUT "PDFs: $number_of_pdfs \nXMLs: $number_of_xmls\nFile: $sevenzip_file \nExtraction Directory: $output_directory\n\n";
die;
}
并且在我提取的第一个文件中,XML 不在正确的路径中......有人没有遵循模式。非常尴尬感谢您的回应。