在我的Foreach循环中,我只想处理文件名中包含 crosswlk 的文件。不幸的是,这是在文件名的中间,我不能 crosswlk.pgp 。
我已经谷歌搜索了这一堆,大多数解决方案都说要在脚本任务中做一些C#来实现这一目标。看起来我应该可以在Foreach容器中执行此操作,也可以在带有表达式的Collection区域中执行此操作。但是我在“属性表达式编辑器”中找到有关各种属性的任何信息时遇到了麻烦。名称,FileSpec
和FileNameRetrieval
属性之间的区别是什么?
我以为我可以做类似的事情:
Property: Name
Expression: `FINDSTRING(@[User::SourceFilename],"crosswlk",1) > 0`
对我而言,只说文件名中包含 crosswlk 的文件。但那不起作用。我注意到 crosswlk 这个词总是从文件名中的第13个字符开始,所以我尝试使用子字符串,但也没有运气。
有没有办法过滤这个(或其他)方式的文件名,或者只使用C#?非常感谢!
答案 0 :(得分:1)
根据文档,您应该能够在“文件”字段中使用通配符。
使用通配符(*)指定要包含在的文件中 采集。例如,要包含名称包含的文件 “abc”,使用以下过滤器:* abc *。
所以,你应该能够使用这样的东西:*crosswlk*
答案 1 :(得分:0)
如果制作可用的通配符太难,那么可能有用的一个选项是使用FOREACH ADO枚举器。首先你要#34;填写"记录集对象变量,包含您想要的所有文件名,然后您可以循环使用它。 您可以通过脚本任务填充记录集对象,并使用C#system.IO来查询文件系统。 如果您需要严格控制处理的文件(例如,防止加载测试文件),这是一种方便的方法。