【发布时间】:2018-07-30 16:46:46
【问题描述】:
我无法提取文件名并将其保存到 SSIS 中的变量中。当且仅当它与 VIn 中的正则表达式中的模式匹配时,我才尝试保存文件名的子字符串。
例如:
EIRSRequest_INC9999999.csv //这应该提取INC9999999并将其保存到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;
}
【问题讨论】:
-
那么您面临的问题是什么?
-
它没有将文件名的子字符串保存到变量中
-
val 仅包含正则表达式模式中括号中的项目。所以你只会得到下划线后面的字符。
-
1.) 什么子串?我看不到您在任何地方都在做子字符串。以及 2.) 哪个变量?
-
脚本从文件名中提取子字符串当且仅当它匹配指定的正则表达式并且假设将子字符串保存到“VIn”。脚本编译得很好,但它不会将子字符串保存到 VIn 变量