首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >7 7Zip从两个不同的子文件夹执行两个提取(只有第一个执行)

7 7Zip从两个不同的子文件夹执行两个提取(只有第一个执行)
EN

Stack Overflow用户
提问于 2017-06-20 18:37:26
回答 2查看 140关注 0票数 1

好吧,我完全不知所措。

我正在尝试从7zip文件中提取所有XML和PDF。在上述文件中有更多的内容,所以我只想从PDF文件夹和XML文件夹中提取。将文件结构留在后面,而不搜索任何其他文件夹。

我正在使用7Zip命令行来完成此操作。

我执行了两个子程序,它们几乎是相同的。

代码语言:javascript
复制
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;
}

。。

代码语言:javascript
复制
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;
}

我用它就像..。

代码语言:javascript
复制
    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被挂在上一次调用的文件上。有办法关闭它或释放文件吗?

任何帮助都很感激,在这方面浪费了很多时间。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-21 13:37:54

用户错误..。它应该如何工作。我有个条件:

代码语言:javascript
复制
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不在正确的路径上.有人没有遵循规律。非常尴尬谢谢你的回应。

票数 0
EN

Stack Overflow用户

发布于 2017-06-21 06:30:47

检查退出状态$?,如果您觉得它挂起。此外,您还可以尝试先提取xmls,然后再提取pdfs,以确保如果提取pdfs命令有问题的话。

共享控制台输出,可以显示更多细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44660693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档