检查多个文件中的(.csv或.dat)文件扩展名,如果没有向用户发送警报

时间:2012-08-13 18:48:00

标签: c# ssis

我是SSIS的新手,

每隔30分钟,我将在源目录中收到一个文件或多个文件

我需要遍历这些文件并检查它是否有.csv.dat扩展名:

  • 如果不是:向用户发送提醒。
  • 如果是:执行包

编辑:我试过了;

Main()
{ 
    try
    {
        string[] filenames;
        filenames = Directory.GetFiles(@"C:Input_Data\");
        string FileExtension = Path.GetExtension("filenames");
        if (FileExtension == ".DAT" && FileExtension == ".csv") 
            Dts.Variables["FileExist"].Value = 1;
    }
    catch 
    { 
        Dts.Variables["FileExist"].Value = 0; 
    }

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

但即使该文件存在.dat扩展名,它也会返回0并发送警报。

1 个答案:

答案 0 :(得分:1)

也许你打算写......

if (FileExtension == ".DAT" || FileExtension == ".csv") 

否则它永远不会评估为真。

另外你可能想要某种循环,你当前的结构试图一次访问所有文件(甚至不那么做)

filenames = Directory.GetFiles(@"C:\Input_Data\");
foreach(string filename in filenames)
{
    string FileExtension = Path.GetExtension(filename);
    if (FileExtension == ".DAT" || FileExtension == ".csv") 
        Dts.Variables["FileExist"].Value = 1;
}

编辑:

根据我的想法,你的意思是,只有当FileExist只包含DAT和CSV类型且没有其他类型时,你才希望FileExist等于1,在这种情况下你想要反转逻辑。

filenames = Directory.GetFiles(@"C:\Input_Data\");
Dts.Variables["FileExist"].Value = 1;
foreach(string filename in filenames)
{
    string FileExtension = Path.GetExtension(filename);
    if (FileExtension != ".DAT" && FileExtension != ".csv") 
        Dts.Variables["FileExist"].Value = 0;
}