2013-03-08 63 views
1

匹配文件名和文件夾名我有四個文件xxxxxxCd999,xxxxCf999,xxxxC999,xxxxD999 ......我需要將這些文件移動到基​​於文件名的相應文件夾,例如文件xxxxxCd999應該被移動到文件夾Cd999,文件xxxxCf999應該被移動到文件夾Cf999,文件xxxC999應該NE移至等文件夾C999 ... 如何在SSIS實現這一目標?如何將文件移動到不同的文件夾,基於在SSIS

我用for each循環容器,分配給源路徑,的DestinationPath和文件系統任務使用這些變量的一些變數,但我現在不會Lost N不知道如何着手, 請幫我

+0

已經創建的上述文件夾? – praveen 2013-03-08 06:58:41

+0

是目標文件夾已存在 – LOL 2013-03-08 07:04:10

回答

3

試試這個: -

Foreach Loop將枚舉源文件夾,路徑將被存儲在一個變量中。在script task編寫代碼使用正則表達式.The腳本任務值以得到該文件夾​​名稱將被存儲在其中將在File System Task

使用另一個變量的包裝設計將

enter image description here

  • 創建3可變

    Name   DataType Expression 
    FolderName string 
    DestLoc  string  "D:\\"+ @[User::FolderName] 
    LoopFiles  string 
    

在用於DestLoc可變上述表達式中,它改變按您的位置

  • foreach循環配置 enter image description here

enter image description here

更改源文件夾位置按需要

  • 鈧RIPT任務 - 增加了2個可變如下 enter image description here

  • 您需要從變量LoopFiles

LoopFiles變量解壓文件夾名稱將具有D:\ForLoop\SampleFolder1.txt在運行時

因此,爲了從上述可變使用正則表達式提取的文件夾名稱

打開Edit Script寫下面的代碼

List<string> filePatterns = null; 

public void Main() 
{ 
    filePatterns = new List<string>(); 
    filePatterns.Add("Folder1"); 
    filePatterns.Add("Folder2"); 
    string fileName = Path.GetFileNameWithoutExtension(Dts.Variables["User::LoopFiles"].Value.ToString()); 
    Match match = Regex.Match(fileName, string.Join("|", filePatterns.ToArray())); 
    Dts.Variables["User::FolderName"].Value = match.Value; 
    Dts.TaskResult = (int)ScriptResults.Success; 
    } 

在上面的代碼,你解壓文件夾名稱,將其存儲在變量FolderName。如果你有multiple folders,則只需添加folder namesfilePatterns集合變量。

  • 文件系統任務配置

enter image description here

+0

嗨,我有類似的要求。當我跟蹤你的進程時,出現錯誤提示:「[文件系統任務]錯誤:出現以下錯誤消息時出錯:」給定的路徑格式不受支持「 」 – 2016-04-20 09:21:10

相關問題