C# SSIS:检查所有文件的修改日期,仅移动超过2周的文件

C# SSIS:检查所有文件的修改日期,仅移动超过2周的文件,c#,sql,sql-server,ssis,C#,Sql,Sql Server,Ssis,在我的SSIS项目中,我有一个foreach循环容器,它使用简单的逻辑将文件从源文件夹移动到归档文件夹,将文件“排序”到正确的文件夹(月份和年份) 但在我移动任何文件之前,我必须检查上次修改的日期,并且只有在文件超过2周时才移动它们。因此,我想在执行移动文件的序列容器之前需要一些脚本任务,并执行此检查。我使用了System.IO.FileInfo和LastWriteTime,但任何示例都会有很大帮助 使用:SQL Server 2012/SQL Server数据工具集2010 感谢您的帮助和建议

在我的SSIS项目中,我有一个foreach循环容器,它使用简单的逻辑将文件从源文件夹移动到归档文件夹,将文件“排序”到正确的文件夹(月份和年份)

但在我移动任何文件之前,我必须检查上次修改的日期,并且只有在文件超过2周时才移动它们。因此,我想在执行移动文件的序列容器之前需要一些脚本任务,并执行此检查。我使用了System.IO.FileInfo和LastWriteTime,但任何示例都会有很大帮助

使用:SQL Server 2012/SQL Server数据工具集2010

感谢您的帮助和建议!:) 谢谢大家

试试这个:

    public List<FileInfo> getLastFiles(string path)
    {
        List<FileInfo> lastFiles = new List<FileInfo>();
        string[] files = Directory.GetFiles(path);
        foreach (string file in files)
        {
            FileInfo fileinfo = new FileInfo(file);
            if ((DateTime.Now - fileinfo.LastWriteTime).TotalDays > 14)
            {
                lastFiles.Add(fileinfo);
            }
        }
        return lastFiles;
    }
公共列表getLastFiles(字符串路径)
{
List lastFiles=新列表();
string[]files=目录.GetFiles(路径);
foreach(文件中的字符串文件)
{
FileInfo FileInfo=新的FileInfo(文件);
如果((DateTime.Now-fileinfo.LastWriteTime).TotalDays>14)
{
添加(fileinfo);
}
}
返回最新文件;
}

好的,这很接近,但可能我没有正确测试。我将您的代码添加到任务的脚本中,但在执行包时,它仍然移动了文件(已经3天了)。也许我可以使用变量作为文件夹路径,而不是方法的参数字符串路径?您可以根据需要更改此方法,但有一件事我不明白它是如何捕获3天前的文件的。当我测试它时,它只捕获2周以前的文件。我想这里只有我。。我不太清楚SSIS是如何与C代码一起工作的。我应该将此方法放在public void Main()方法中吗?那么字符串“path”是如何设置的,以便它知道目的地?不,您可以从Main调用此方法,只需将其更改为static并传递所需的路径。不管它是来自参数还是来自代码中的硬编码,好吧!我主要是这样叫它:getLastFiles(“C:\\Users\\blabla”);但是仍然需要所有的文件,而不是只有一个。