c# - 解压缩目录中的所有 .zip 档案
问题描述
我正在努力配置一个脚本来解压缩一个目录中的所有 .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);
}
}
}
解决方案
首先,你得到所有.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);
});
}
推荐阅读
- tensorflow - 在深度学习中结合训练和推理的重要性
- android-studio - 如何解决我在 Eclipse IDE 中安装的 Android 的问题?
- ios - Target 覆盖 Xcode 12.5 和 Swift 5 中的“ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”构建设置警告
- php - 资源所有者或授权服务器拒绝了该请求。laravel 护照
- shell - 如何将多个文件作为参数传递给shell脚本中的函数
- flutter - Flutter:如何从 api 获取数据并绑定到 PaginatedDataTable
- wordpress - WordPress WooCommerce 中的帐户验证电子邮件
- riscv - 为什么不受约束的 LR/SC 序列在某些 RISCV 实现上永远不会成功?
- r - 如何从一个列表中获取另一个
- github - 拒绝允许个人访问令牌创建或更新工作流