> Hi all,
> Is it possible to use some nant task to do this:
> I need delete files with specific name NameOfFile*.zip which are older then 1
> month and in dir must be at least 3 files of that name.
> My english is not so good so here is example.
> 1. I have 30 files of specific name pattern. 25 are older then one month
> - that 25 file will be deleted, because there still will be 5 files 2. I have 
> 30 files
> of specific name pattern. 29 are older then one month
> - 27 oldest files will be deleted, because I need at least 3 files of that 
> pattern.
> Hopefully you can understand me
> Best Regards Ales

Here is my hazel target. I thought of creating it as a task... but have been 
too lazy. But, if someone wants to add the hazel task to Nantcontrib I don't 
have a problem with that. This clears leaving behind a certain number of files, 
but it could easily be changed to use age of file instead.

<target name="hazel">
    <property name="hazel.searchPattern" value="*" overwrite="false" />
    <script language="C#">
        public static void ScriptMain(Project project)
            string path = project.Properties["hazel.dirToClean"];
                        string searchPattern = 
                        string [] folders = 

            System.Collections.ArrayList dirlist = new 
            foreach (string folder in folders)
                dirlist.Add(new DirectoryInfo(folder));
            dirlist.Sort(new DirectoryInfoDateComparer());

            for (int i = 5; i < dirlist.Count; i++)
                string foldername = ((DirectoryInfo)dirlist[i]).Name;;
                    project.Log(Level.Info, String.Format("Deleted folder {0}", 

                catch (Exception e) { project.Log(Level.Warning, 
String.Format("Unable to delete folder {0}, {1}", foldername, e.Message)); }

        internal class DirectoryInfoDateComparer : System.Collections.IComparer
            public int Compare(object x, object y)
                DirectoryInfo di1 = (DirectoryInfo)x;
                DirectoryInfo di2 = (DirectoryInfo)y;

                return di1.CreationTime.CompareTo(di2.CreationTime);

Here is an example of how I would call it:

        <property name="hazel.dirToClean"    value="${InstallDir}" />
        <property name="hazel.searchPattern" value="CD 
${version.major}_${version.minor}_${version.build}_${version.revision}_*" />
        <call target="hazel" />


Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
NAnt-users mailing list

Reply via email to