Este é um programa dot_deltree.cs
em C # que exclui árvores de diretórios de qualquer profundidade. Ele funciona primeiro movendo diretórios muito profundos para nomes aleatórios no diretório mais superficial.
using System;
using System.IO;
public class dot_deltree
{
public static void Main(string[] args) {
if ( ! (args.Length == 1) ) {
Console.Error.WriteLine("Usage: dot_deltree [path]");
Environment.Exit(1);
}
string dirname = args[0];
if ( ! Directory.Exists(dirname) ) {
Console.Error.WriteLine("{0} does not exist or is not a directory!", dirname);
Environment.Exit(1);
}
confirm_deleting(dirname);
while ( true ) {
string too_deep_dir = deltree( dirname );
if ( too_deep_dir.Equals("") ) {
break;
}
string randomname = Path.GetRandomFileName();
Console.Error.WriteLine(
"Moving too deep directory {0}:{2} to random name {1}",
too_deep_dir, randomname, too_deep_dir.Length
);
Directory.Move( too_deep_dir, Path.Combine(dirname,randomname) );
}
}
public static void confirm_deleting(string path) {
Console.Write("Do you really want do delete directory {0} recursively (type YES)? ", path);
string result = Console.ReadLine();
if ( ! result.Equals("YES") ) {
Environment.Exit(1);
}
}
public static string deltree(string uncpath) {
if ( uncpath.Length > 200 ) {
return uncpath;
}
string[] subdirectories = Directory.GetDirectories(uncpath);
foreach (string subdirectory in subdirectories) {
string result = deltree(subdirectory);
if ( ! result.Equals("") ) {
// Return up too deep directory
return result;
}
}
// Console.Error.WriteLine("Deleting {0}", uncpath);
Directory.Delete(uncpath,true);
return "";
}
}
Compilado usando o compilador Mono C # usando gmcs dot_deltree.cs
para .NET 2.0 é aqui (4kb) .