Я пытаюсь извлечь все ZIP-архивы из их соответствующего каталога / подкаталога в соответствующий каталог / подкаталог.
Пример структуры:
-Root-Directory
- File.txt
- Fi.docx
- Files.zip
- TestEx.jpg
- Example.png
- /Subdirectory_1
- ExampleData.txt
- Example.xlsx
- Archive1.zip
- ExampleData_1.txt
- ExampleData_2.txt
- Archiv2.zip
- Data1.txt
- Data2.txt
- ...
- /Subdirectory_2
- T_1.txt
- ABC.xlsx
- ZippedFiles.zip
- Imag_1.jpeg
- Imag_2.gif
- ZipFiles.zip
- Music.wav
- Sound.mp3
Как это должно выглядеть:
-Root-Directory
- File.txt
- Fi.docx
- TestEx.jpg
- Example.png
- /Subdirectory_1
- ExampleData.txt
- Example.xlsx
- ExampleData_1.txt
- ExampleData_2.txt
- Data1.txt
- Data2.txt
- ...
- /Subdirectory_2
- T_1.txt
- ABC.xlsx
- Imag_1.jpeg
- Imag_2.gif
- Music.wav
- Sound.mp3
Моя попытка:
private static void unzipAllFiles(DirectoryInfo directoryPath)
{
foreach( DirectoryInfo dirs in directoryPath.GetDirectories() )
{
foreach (FileInfo file in dirs.GetFiles())
{
if(Path.GetExtension(file.FullName).Equals(".zip"))
{
//Console.WriteLine(file.FullName);
string zPath = @"C:\Program Files\7-Zip\7z.exe";// change the path and give yours
try
{
ProcessStartInfo pro = new ProcessStartInfo();
pro.WindowStyle = ProcessWindowStyle.Hidden;
pro.FileName = zPath;
pro.Arguments = "x -r -aou \"" + file.FullName;
Process process = Process.Start(pro);
process.WaitForExit();
}
catch (System.Exception Ex)
{
//DO logic here
}
}
}
}
}
Несколько вещей здесь:
- Как подавить открытие
cmd.exe
? - Он даже не перебирает архивы ZIP в каталоге root. Как это исправить?
- Хотя при выводе 7zip на
cmd.exe
печатается, что некоторая часть распаковки обрабатывается, ничего не происходит. Как это исправить?
Заранее спасибо.