C# 从文件名中提取子字符串并将其保存到SSIS中的变量
我无法提取文件名并将其保存到SSIS中的变量。我试图保存文件名的子字符串,当且仅当它与VIn中正则表达式中的模式匹配时 例如: EIRSRequest_inc999999.csv//这应该提取inc999999并将其保存到VIn变量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
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
失败了,我评论说。。。试着看看到底出了什么问题