【问题标题】:7Zip execute 2 extractions from 2 different subfolders (only first executes)7Zip 从 2 个不同的子文件夹执行 2 次提取(仅第一次执行)
【发布时间】:2017-06-20 18:37:26
【问题描述】:

好吧,我完全不知所措。

我正在尝试从 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 挂断了上次通话的文件。有没有办法关闭它或释放文件?

感谢您的帮助,为此浪费了很多时间。

谢谢!

【问题讨论】:

  • 好吧我也想补充一下,我现在已经尝试将命令写入批处理文件来执行,但没有运气......同样的事情。

标签: perl zip 7zip strawberry-perl activestate


【解决方案1】:

检查退出状态$?,如果你觉得它挂了。 您也可以尝试先提取 xmls 然后再提取 pdfs 以真正确定,如果提取 pdfs 命令出现问题。

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

【讨论】:

  • 澄清一下,这不是 PDF 的提取,而是提取。如果您运行 XML,则首先提取 XML 而不是 PDF,反之亦然。 (因为 7zip 已经处理好了……)
  • 这是我必须解决的唯一错误......No files to process Files: 0 Size: 0 Compressed: 3114222
  • 我觉得 7z 进程没有返回到 perl 代码,这可能导致它挂起。如果可能的话,你可以附上一个示例 7z 文件,我可以运行代码并检查它。
  • 我真的很感激,但我解决了。它实际上运行良好,XML 不在正确的目录中。我应该先检查一下-_-。
【解决方案2】:

用户错误...按应有的方式工作。 我有一个条件:

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 不在正确的路径中……有人没有遵循模式。非常尴尬感谢回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多