首页 > 技术文章 > 自杀程序&递归删除目录

cnryb 2016-11-18 14:49 原文

自杀程序,删掉自身,包括执行程序所在的文件夹。

仅在windows下进行了测试,使用语言C#

        string fileName = Path.GetTempPath() + "killmyself.bat";
        FileInfo fi = new FileInfo(fileName);
        if(fi.Exists)
            fi.Delete();
        StreamWriter bat = new StreamWriter(fi.OpenWrite());

        bat.WriteLine("cd ..");
        //bat.WriteLine($"del \"{Environment.CurrentDirectory}\" /q");
        bat.WriteLine($"rd \"{Environment.CurrentDirectory}\" /Q /S");  //删除包括执行程序的文件夹
        bat.WriteLine($"del \"{fileName}\" /q");    //删除临时bat文件

        bat.Close();
        ProcessStartInfo info = new ProcessStartInfo(fileName);
        info.WindowStyle = ProcessWindowStyle.Hidden;
        Process.Start(info);
        Environment.Exit(0);

递归删除目录的样例代码

    /// <summary>
    /// 递归删除目录
    /// </summary>
    /// <param name="dir"></param>
    public static void Deletedir(DirectoryInfo dir)
    {
        if (!dir.Exists)
        {
            Console.WriteLine("Directory not exists");
            return;
        }

        foreach (var item in dir.GetDirectories())
        {
            Deletedir(item);
        }
        try
        {
            dir.Delete(true);
            Console.WriteLine("delete   " + dir.FullName);
        }
        catch (Exception)
        {
        }
    }

推荐阅读