Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File SSIS-使用文件_File_Ssis_Task - Fatal编程技术网

File SSIS-使用文件

File SSIS-使用文件,file,ssis,task,File,Ssis,Task,我试图根据文件夹中文件的修改日期(今天的日期)获取所有以Comp开头的文件。有多个名为Comp1、CompAL、Comp50等的文件。 基本上,我有一个包含以下代码的脚本任务: public void Main() { DateTime lastModified = DateTime.MinValue; string path = Dts.Variables["User::CompFilePath"].Value.ToString() ;

我试图根据文件夹中文件的修改日期(今天的日期)获取所有以Comp开头的文件。有多个名为Comp1、CompAL、Comp50等的文件。 基本上,我有一个包含以下代码的脚本任务:

public void Main()
    {
        DateTime lastModified = DateTime.MinValue;
        string path = Dts.Variables["User::CompFilePath"].Value.ToString() ;
        List<FileInfo> LastFiles = new List<FileInfo>();
        string[] files = Directory.GetFiles(path);
        foreach (string file in files)
        {
            FileInfo fileinfo = new FileInfo(file);
            if ((fileinfo.LastWriteTime > lastModified))
            {

                lastModified = fileinfo.LastWriteTime;
                LastFiles.Add(fileinfo);
                Dts.Variables["User::CompFileNames"].Value = fileinfo.ToString();


            }

        }  
public void Main()
{
DateTime lastModified=DateTime.MinValue;
字符串路径=Dts.Variables[“User::CompFilePath”].Value.ToString();
List LastFiles=新列表();
string[]files=目录.GetFiles(路径);
foreach(文件中的字符串文件)
{
FileInfo FileInfo=新的FileInfo(文件);
如果((fileinfo.LastWriteTime>lastModified))
{
lastModified=fileinfo.LastWriteTime;
添加(fileinfo);
Dts.Variables[“User::compfilename”]。Value=fileinfo.ToString();
}
}  
然后,我给自己发了一封电子邮件,看看我是否得到了所有的文件,但我只得到了一个文件名,甚至不是Comp文件,大约有50个Comp文件

CompFilePath变量为字符串,值为\SharedDrive\work\ compfilename为空,因此可以存储文件名

  • 如何添加文件名开头的内容,以便它可以捕获所有文件
  • 我怎样才能得到所有的文件名而不是一个文件名呢?这就像我的列表只抓取了一个文件一样
  • 如果我将所有文件名保存在变量compfilename中,我是否能够将其用作ForEachLoop容器中的filespec? 我试着在网上搜索,但找不到任何关于这方面的教程。 有人能帮助我或指导我学习教程吗?我正在使用Microsoft Visual Studio 2012

  • 首先,您需要将
    compfilename
    转换为一个可以保存集合的变量,即
    对象
    类型变量。接下来,创建一个名为
    FileInfoList
    列表
    来保存
    fileInfo.ToString()
    要存储在
    CompFileNames
    中并填充此
    列表的值。完成对文件夹中每个文件的处理后,将
    FileInfoList
    分配给
    CompFileNames
    以填充它


    Object
    类型的变量可以用作
    ForEach
    容器中的
    Enumerator
    。您可以将
    Enumerator
    类型更改为
    ForEach From variable
    并使用
    compfilename
    作为源变量。然后,创建一个
    String
    变量来保存集合dur中的项调用循环,比如说
    FileInfoName
    ,在
    变量
    选项卡中,将索引0映射到该变量。

    您还没有解释您发送电子邮件的依据是什么……但我可以看到代码中的循环只是将变量
    CompFileName
    的值替换为循环中的文件,每次都替换它。所以这个变量将只包含最后一个文件名。您看过For Each File迭代器了吗?它可能不需要任何代码就能完成您想要的任务。