好吧,我完全不知所措。
我正在尝试从7zip文件中提取所有XML和PDF。在上述文件中有更多的内容,所以我只想从PDF文件夹和XML文件夹中提取。将文件结构留在后面,而不搜索任何其他文件夹。
我正在使用7Zip命令行来完成此操作。
我执行了两个子程序,它们几乎是相同的。
sub Extract_pdfs_from_this
{
my ($file, $destination) = @_;
my $sevenzip_executable = '\\\\server\7-Zip\7z.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\7-Zip\7z.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被挂在上一次调用的文件上。有办法关闭它或释放文件吗?
任何帮助都很感激,在这方面浪费了很多时间。
谢谢!
发布于 2017-06-21 13:37:54
用户错误..。它应该如何工作。我有个条件:
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不在正确的路径上.有人没有遵循规律。非常尴尬谢谢你的回应。
发布于 2017-06-21 06:30:47
检查退出状态$?,如果您觉得它挂起。此外,您还可以尝试先提取xmls,然后再提取pdfs,以确保如果提取pdfs命令有问题的话。
共享控制台输出,可以显示更多细节。
https://stackoverflow.com/questions/44660693
复制相似问题