====== C Sharp - DelLast ======
Program służy do usuwania pierwszych katalogów wg listy alfabetycznej. Czyli mamy katalogi: 1, 2, 3, 4, 5 – i chcemy, aby zostały trzy ostatnie, więc wpisujemy:
dellast.exe -n 3 c:\path
czyli katalogi 1 i 2 zostaną usunięte.
Użycie:
Usage:
dellast.exe -n=n [-test] path
Example:
dellast.exe -n=25 -test d:\tmp
dellast.exe -n=15 d:\tmp
Opcja -test wylistuje nam katalogi do usunięcia, ale ich nie usunie. Aplikację głównie wykorzystuje w trzymaniu historii archiwów na dysku. Aplikacja jest darmowa i można ją używać za darmo.
Download: [[http://kamil.orchia.pl/f/dellast/dellast.7z|źródła]] [[http://kamil.orchia.pl/f/dellast/DelLast.exe|binaria]] – program wymaga bibliotek [[http://www.microsoft.com/en-us/download/details.aspx?id=1639|DotNet 2.0]]
Kod źródłowy:
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace DelLast
{
class Program
{
static void Main(string[] args)
{
//args = new string[2] { "-n=4", "I:\\" };
bool test = false;
int n = 0;
string folder = "";
foreach (string arg in args)
{
if (arg.Length > 2)
{
if (arg == "-test")
{
test = true;
}
else if (arg.Substring(0, 3) == "-n=")
{
n = int.Parse(arg.Substring(3, arg.Length - 3)) - 1;
}
else
{
folder = arg;
}
}
}
if (folder == "" || n == 0)
{
Console.WriteLine("Usage:\n dellast.exe -n=n [-test] path\nExample:\n dellast.exe -n=25 -test d:\\tmp\n dellast.exe -n=15 d:\\tmp");
System.Environment.Exit(0);
}
Regex r = new Regex(@"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$");
if (r.IsMatch(folder))
{
try
{
//directoryString = directoryString.Remove (i, directoryString.Length - i);
Console.WriteLine("Directories under \"{0}\" are...", folder);
string[] directories = Directory.GetDirectories(folder);
Array.Sort(directories);
Array.Reverse(directories);
int i = 0;
foreach (string dir in directories)
{
if (i > n)
{
if (test)
{
Console.WriteLine("Subdirectory to del: \"{0}\"", dir);
}
else
{
Console.WriteLine("Delete dir: \"{0}\"", dir);
Directory.Delete(dir, true);
}
}
i++;
}
}
catch (System.UnauthorizedAccessException)
{
Console.WriteLine("Access denide to folder!");
}
catch (System.IO.PathTooLongException)
{
Console.WriteLine("To long path!");
}
catch (System.IO.DirectoryNotFoundException)
{
Console.WriteLine("Path not found!");
}
finally
{
}
}
else
{
Console.WriteLine("Error: " + folder + " - is not folder!");
}
}
}
}