Decompressing *.7Z Files with MATLAB

83 vues (au cours des 30 derniers jours)
Matlab2010
Matlab2010 le 28 Oct 2014
Commenté : Walter Roberson le 13 Juin 2022
I have a 7z file. I wish to decompress it using Matlab. How can I do this? The inbuilt matlab functions dont support it.
I have tried,
[status,result] = system(['"C:\Program Files\WinRAR\UnRAR.exe" e ' E:\myFile.7z ' >null']);
however this fails as it gives
result =
UNRAR 5.11 freeware Copyright (c) 1993-2014 Alexander Roshal
E:\myFile.7z is not RAR archive
No files to extract
On closer inspection unrar.exe is not the same as winrar (which can do 7z). Hence i download 7-zip
[status,result] = system(['"C:\Program Files\7-Zip\7z.exe" e ' E:\myFile.7z]);
result =
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Processing archive: E:\myFile.7z
Error: Can not open file as archive
any ideas?
thanks

Réponse acceptée

Matlab2010
Matlab2010 le 29 Oct 2014
Modifié(e) : Matlab2010 le 22 Nov 2014
solved:
[status,result] = system(['"C:\Program Files\7za920\7za.exe" -y x ' '"' filename{f} '"' ' -o' '"' outputDir '"']);
Also, just in case anyone finds it useful, compressing a file with winrar is done by:
[status,result] = system(['"C:\Program Files\WinRAR\Rar.exe" a ' 'C:\Users\user\Desktop\8736_test.rar ' ' C:\Users\user\Desktop\8736.mat' ' >null']);
  2 commentaires
Walter Roberson
Walter Roberson le 7 Mai 2019
system() out to the appropriate bzip2 or bunzip program with the appropriate options
It appears that some versions of gzip can handle .tar.bz2 files when given appropriate options.

Connectez-vous pour commenter.

Plus de réponses (1)

Jake August
Jake August le 19 Avr 2016
This was very helpful. Someone else looking might find this useful.
% for 7zip 15.14 x64
file7z = 'D:\my.7z';
% rest of code
[dir7z,~,~] = fileparts( file7z );
dir7z = ['"' dir7z '"'];
file7z = ['"' file7z '"'];
[status,cmdout] = system( ['"C:\Program Files\7-Zip\7z.exe" x -o',dir7z,' ',file7z] );
  3 commentaires
Walter Roberson
Walter Roberson le 13 Juin 2022
Perhaps using .NET Systems.Diagnostic.Process() to start the process instead of system()

Connectez-vous pour commenter.

Catégories

En savoir plus sur Debugging and Analysis dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by