SSIS脚本任务使用通配符删除文件

问题描述

使用sql Server 2014 \ VS2019。我具有以下C#脚本任务,可以删除x天数以上的文件夹中的文件,并且可以。

    public void Main()
    {
        int RetentionPeriod = Convert.ToInt32(Dts.Variables["$Package::FileRententionDays"].Value.ToString());
        string directoryPath = Dts.Variables["CSV_ArchivePath"].Value.ToString();
        string[] oldFiles = System.IO.Directory.GetFiles(directoryPath,"*.*");

        foreach (string currFile in oldFiles)
        {
            FileInfo currFileInfo = new FileInfo(currFile);

            if (currFileInfo.LastWriteTime < (DateTime.Now.AddDays(-RetentionPeriod)))
            {
                currFileInfo.Delete();
            }
        }

        Dts.TaskResult = (int)ScriptResults.Success;
    }

但是,如何修改删除文件名以“ ABC”开头的目录中的所有文件

解决方法

在类似于StartsWithPrefix的字符串中定义以“ PREFIX”开头的字符串。使用String.StartsWith方法检查FileInfo名称是否具有满足要求的已定义前缀

            int RetentionPeriod = Convert.ToInt32(Dts.Variables["$Package::FileRententionDays"].Value.ToString());
            string directoryPath = Dts.Variables["CSV_ArchivePath"].Value.ToString();
            string[] oldFiles = System.IO.Directory.GetFiles(directoryPath,"*.*");

            string StartsWithPrefix = "ABC";

            foreach (string currFile in oldFiles)
            {
                FileInfo currFileInfo = new FileInfo(currFile);

                if (currFileInfo.LastWriteTime < (DateTime.Now.AddDays(-RetentionPeriod)) 
                    && currFileInfo.Name.StartsWith(StartsWithPrefix))
                {
                    currFileInfo.Delete();
                }
            }

https://docs.microsoft.com/en-us/dotnet/api/system.string.startswith?view=netcore-3.1 https://docs.microsoft.com/en-us/dotnet/api/system.io.fileinfo.name?view=netcore-3.1