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
C# 从文件名中提取子字符串并将其保存到SSIS中的变量_C#_Ssis - Fatal编程技术网

C# 从文件名中提取子字符串并将其保存到SSIS中的变量

C# 从文件名中提取子字符串并将其保存到SSIS中的变量,c#,ssis,C#,Ssis,我无法提取文件名并将其保存到SSIS中的变量。我试图保存文件名的子字符串,当且仅当它与VIn中正则表达式中的模式匹配时 例如: EIRSRequest_inc999999.csv//这应该提取inc999999并将其保存到VIn变量 public void Main() { String source = @"F:\"; //String destination = @"F:\"; Regex regex = new Regex(@"EIRSRequest_(?<v

我无法提取文件名并将其保存到SSIS中的变量。我试图保存文件名的子字符串,当且仅当它与VIn中正则表达式中的模式匹配时

例如:

EIRSRequest_inc999999.csv//这应该提取inc999999并将其保存到VIn变量

public void Main()
{
    String source = @"F:\";
    //String destination = @"F:\";
    Regex regex = new Regex(@"EIRSRequest_(?<val>[a-zA-Z0-9]{1,})");
    DirectoryInfo di = new DirectoryInfo(source);
    //FileInfo fi = new FileInfo(di.GetFiles);

    foreach (FileInfo fi in di.GetFiles())
    {
        var match = regex.Match(Path.GetFileNameWithoutExtension(fi.Name));

        if (match.Success)
        {
            //Console.WriteLine(match.Groups["val"].Value);

               Dts.Variables["User::vIn"].Value= match.Groups["val"].Value;
            //Console.WriteLine(ticket);

            //File.Move(source + "\\" + fi.Name, destination + "\\" + fi.Name);
            //Console.WriteLine("This is a new line");

            break;
        }
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}
public void Main()
{
字符串源=@“F:\”;
//字符串目标=@“F:\”;
Regex Regex=new Regex(@“EIRSRequest_(?[a-zA-Z0-9]{1,})”;
DirectoryInfo di=新的DirectoryInfo(源);
//FileInfo fi=新的FileInfo(di.GetFiles);
foreach(di.GetFiles()中的FileInfo-fi)
{
var match=regex.match(Path.GetFileNameWithoutExtension(fi.Name));
如果(匹配成功)
{
//Console.WriteLine(匹配.Groups[“val”].Value);
Dts.Variables[“User::vIn”]。Value=match.Groups[“val”]。Value;
//控制台。写入线(票据);
//File.Move(源+“\\”+fi.Name,目标+“\\”+fi.Name);
//WriteLine(“这是一个新行”);
打破
}
}
Dts.TaskResult=(int)ScriptResults.Success;
}

要更新SSIS脚本任务变量,应将该变量设置为“读/写”变量

将变量添加到ReadWriteVariables并检查

你也应该能见到这位官员

由用户提供给包进行读/写访问的现有变量的逗号分隔列表


那么,您面临的问题是什么呢?它不是将文件名的子字符串保存到变量Val中,而是在正则表达式模式中只有括号中的项。因此,您将只获得下划线后面的字符。1.)什么子字符串?我看不出你在做任何子串。和2.)哪个变量?脚本从文件名中提取子字符串,当且仅当它与指定的正则表达式匹配并且假定它将子字符串保存到“VIn”时。脚本编译很好,但不会将子字符串保存到VIn变量。如果VIn最初为空,是否可以?我检查了脚本设置,我有您提到的内容。仔细看,您的源路径和目标路径看起来是相同的。所以,很可能
File.Move
失败了,我评论说。。。试着看看到底出了什么问题