我有一组动态变化的文件,我使用foreach循环容器来更新它们。我使用两个变量(1)表示文件路径,(2)表示源文件夹。我需要将文件名插入一个单独的列中。
文件名:
D:\SAFI\test1\XYZ0000_2016_04_Application_Report.csv`
D:\SAFI\test1\ABC0000.10_2016_04_Application_Report.csv`
我只需要将XYZ0000插入新列。如何借助变量做到这一点?我正在使用派生列,需要在新列中输出:
Filename
XYZ0000
ABC0000.10
答案 0 :(得分:2)
尝试以下:
@FilePath:
D:\SAFI\test1\ABC0000.10_2016_04_Application_Report.csv
@FileName:
RIGHT( @[User::FilePath], FINDSTRING(REVERSE( @[User::FilePath] ) , "\\", 1) - 1)
Result: ABC0000.10_2016_04_Application_Report.csv
@OnlyFile:
LEFT( @[User::FileName], FINDSTRING( @[User::FileName],"_",1 ) -1)
Result: ABC0000.10
将@FileName替换为@Onlyfile的表达式,使其成为单变量。
答案 1 :(得分:1)
如果我们认为文件的非感兴趣部分以第一次出现'_'开头,则可以使用以下表达式:
SUBSTRING(@[User::Variable1FilePath],15,FINDSTRING( @[User::Variable1FilePath],"_" ,1 )-15)
假设您有所有文件的'D:\ SAFI \ test1 \'公共文件夹(SUBSTRING函数中使用的长度为15)
或者您可以考虑表示路径末尾的第三个'\'出现 并尝试:
SUBSTRING(@[User::Variable1FilePath],FINDSTRING( @[User::Variable1FilePath],"\\" ,3 )+1,FINDSTRING( @[User::Variable1FilePath],"_" ,1 )-(FINDSTRING( @[User::Variable1FilePath],"\\" ,3 )+1))
我希望这对你有所帮助。