【问题标题】:Unzip all .zip archives in a directory解压缩目录中的所有 .zip 档案
【发布时间】:2018-08-13 17:38:19
【问题描述】:

我正在努力配置一个脚本来解压缩一个目录中的所有 .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);
    }
  }
}

【问题讨论】:

  • 你有什么问题?
  • 为什么不在你的 foreach 循环中提取?

标签: c# zip system.io.compression


【解决方案1】:

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

对于每个路径,将其解压缩到由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);
        });
    }

【讨论】:

  • 如果我的 zip 文件中包含另一个 .zip 文件怎么办?我尝试了您的解决方案,但它没有提取其中的 .zip 文件。
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2011-06-14
  • 2012-07-13
  • 2015-06-11
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多