将所有.zip存档解压缩到目录中

时间:2018-08-13 17:38:19

标签: c# zip system.io.compression

我正在努力配置脚本以将所有.zip归档文件解压缩到目录中,并将提取的文件放在另一个目录中。我想安排此脚本按计划运行,以处理传入的.zip存档。

对于源目录中的每个.zip文件,我需要它将那些文件提取到目标位置,然后重复进行,直到处理完所有.zip文件。

这是我可怕的尝试。

using System;
using System.IO;
using System.IO.Compression;

namespace Unzipper
{
class Program
  {
    static void Main(string[] args)
    {
        string startPath = @"C:\zipdirectory\";

        foreach(String file in Directory.GetFiles(startPath, "*.zip", SearchOptions.AllDirectories)){allFiles.Add(file);

        string zipPath = @"(output from above??)

        string extractPath = @"C:\unzipdirectory\";

        ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
  }
}

1 个答案:

答案 0 :(得分:1)

首先,您在.zip中获得了所有startPath文件

对于每个路径,将其解压缩到由C:\unzipdirectory\<zip_file_name_without_extension_zip>

之类的组合创建的新文件夹中
static void Main(string[] args)
    {
        string startPath = @"C:\zipdirectory\";
        string extractPath = @"C:\unzipdirectory\";
        Directory.GetFiles(startPath, "*.zip", SearchOptions.AllDirectories).ToList()
            .ForEach(zipFilePath => {
                var extractPathForCurrentZip = Path.Combine(extractPath, Path.GetFileNameWithoutExtension(zipFilePath));
                if(!Directory.Exists(extractPathForCurrentZip))
                {
                    Directory.CreateDirectory(extractPathForCurrentZip);
                }
                ZipFile.ExtractToDirectory(zipFilePath, extractPathForCurrentZip);
        });
    }