【发布时间】:2020-08-22 04:06:38
【问题描述】:
我尝试将它们各自目录/子目录中的所有 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 档案。如何解决这个问题?
- 尽管
cmd.exe上的7zip 的输出显示处理了一些提取,但没有任何反应。如何解决?
提前致谢。
【问题讨论】:
-
也许跳过
7z并使用.NET 标准库中的ZipArchive和ZipFile?这是一个很好的例子:docs.microsoft.com/en-us/dotnet/api/… -
请告诉我们这个尝试。
-
我看不到任何指定文件应该写入的位置。我认为是将它们写入当前目录,而不是 .zip 文件所在的目录。