英语视听说抄答案的小工具
C# 设置代理小工具

C# 漫画打包小工具

scturtle posted @ 2010年1月29日 21:05 in Other , 2190 阅读

把批量下下来的漫画有序的打包成iphone/itouch上iComic用的zip

 

自动从注册表找winrar安装地址(不一定通用)

遍历并查找最后一级目录

打的包放在上一级目录里

已打包过的不在打了,加快速度

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Microsoft.Win32;
using System.Diagnostics;

namespace ZipMyComics
{
    class Program
    {
        static string rarpath;

        static bool InitialzeWinRAR()
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\WinRAR");
            if (key == null) return false;
            rarpath = (string)key.GetValue("exe32");
            return true;
        }

        static bool rar(ref DirectoryInfo dir)
        {
            Process proc = new Process();
            ProcessStartInfo StartInfo = new ProcessStartInfo();

            StartInfo.FileName = rarpath;
            StartInfo.Arguments = "a " + "\"" + dir.Name + "\"" + ".zip" + " " + "\"" + dir.Name + "\"" + " -r -ep";
            StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            StartInfo.WorkingDirectory = dir.Parent.FullName;
            proc.StartInfo = StartInfo;
            proc.Start();
            if (proc != null)
            {
                // 监视进程退出
                proc.EnableRaisingEvents = true;
                // 指定退出事件方法
                proc.WaitForExit();
                return true;
            }
            else return false;
        }

        static void ListFiles(DirectoryInfo fdir)
        {
            //无子目录 为最终子目录
            DirectoryInfo[] cdirs = fdir.GetDirectories();
            if (cdirs.Length == 0)
            {
                //Console.WriteLine(fdir.Name + " 为最终子目录!");
                bool hasZIP = false;//是否已打包过
                foreach (FileInfo file in fdir.Parent.GetFiles())
                    if (file.Name.Equals(fdir.Name + ".zip")) { hasZIP = true; break; }
                if (hasZIP)
                    Console.WriteLine("不必生成 " + fdir.Name + ".zip");
                else
                {
                    if (rar(ref fdir))
                        Console.WriteLine("生成 " + fdir.Name + ".zip");
                    else
                        Console.WriteLine("生成 " + fdir.Name + ".zip" + " 时发生错误");
                }
                Console.WriteLine("");
            }
            //对于子目录,进行递归调用
            else foreach (DirectoryInfo cdir in cdirs)
                    ListFiles(cdir);
        }

        static void Main(string[] args)
        {
            if (args.Length != 0)
            {
                if (InitialzeWinRAR())
                {
                    Console.WriteLine("找到了 WinRAR: " + rarpath);
                    Console.WriteLine("当前目录: " + args[0]);
                    Console.WriteLine("");

                    ListFiles(new DirectoryInfo(args[0]));

                    Console.WriteLine("结束!");
                }
                else
                {
                    Console.WriteLine("没有找到 WinRAR 自动退出...");
                }
            }
            else
                Console.WriteLine("请把文件夹拖到此程序上面来打开!");

            Console.WriteLine("任意键退出...");
            Console.Read();
        }
    }
}

 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter