D'accord, je suis à perte totale. J'essaie d'extraire tous les fichiers XML et PDF à partir d'un fichier 7zip. Il y a plus de choses à l'intérieur de ce fichier, donc je veux juste extraire du dossier PDF et du dossier XML. Quitter la structure du fichier et ne pas chercher dans d'autres dossiers. J'utilise la ligne de commande 7Zip pour ce faire.7Zip exécuter 2 extractions à partir de 2 sous-dossiers différents (seulement les premières exécutions)
J'ai deux sous-routines que j'exécute qui sont presque identiques.
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;
}
et je l'utilise comme si ...
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);
}
Lorsqu'il est exécuté les fichiers PDF s'extraits mais pas les fichiers XML. Je reçois une erreur, il n'y a aucun fichier à traiter.
Je me sens comme 7zip est accroché sur le fichier de l'appel précédent. Y at-il un moyen de le fermer ou de libérer le fichier?
Toute aide appréciée, beaucoup de temps perdu à ce sujet.
Merci!
Ok, je voudrais aussi ajouter, j'ai maintenant essayé d'écrire les commandes à un fichier batch à exécuter, sans chance ... même chose. – gregnnylf94