プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

【C#】zipファイルをD&Dすると解凍するプログラム

右クリしたり中身いちいち確認したりがめんどいんで作りました。

DLは以下のリンクから
http://monoboshi.web.fc2.com/DandDZipExtractor.zip

・使い方
このプログラムにzipファイルをD&Dするとそのファイルのある場所に解凍します。
複数D&Dもできます。
同名ファイルがあった場合は上書きしないで飛ばします。

ウイルスバスターランサムウェア扱いされましたが気にしないでください。

・動作例
D&Dすると進捗を表示します。
f:id:shirakamisauto:20160621113914p:plain

・コード

using System;
using System.Text;
using Ionic.Zip;
using System.IO;

namespace ZipExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = Environment.GetCommandLineArgs();

            for (int i = 1; i < files.Length; i++)
            {
                string zipPath = files[i];
                if (!ZipFile.IsZipFile(zipPath))
                    continue;

                //シフトJISで読み込み
                var enc = new ReadOptions() { Encoding = Encoding.GetEncoding("shift_jis") };
                using (ZipFile zip = ZipFile.Read(zipPath, enc))
                {
                    Console.WriteLine("ファイル数:" + zip.Count);
                    for (int n = 0; n < zip.Count; n++)
                    {
                        //zipのある場所に解凍
                        zip[n].Extract(Path.GetDirectoryName(zipPath),
                            //同名ファイルは上書きしない 
                            ExtractExistingFileAction.DoNotOverwrite);
                        Console.WriteLine(n + 1 + "/" + zip.Count + " Completed.");
                    }
                }
            }
        }
    }
}