2013-07-10 91 views
8

我要檢查,看是否有文件從SSIS一個特定的文件夾存在。我怎樣才能做到這一點?SSIS腳本任務,如果在文件夾中存在或不

+1

你可以用它作爲你的出發點。 http://stackoverflow.com/questions/7385251/how-to-check-if-a-file-exists-in-a-folder –

+0

我使用下面的代碼 Dts.Variables( 「FILEEXISTS」)。價值= File.Exists(Dts.Variables(「FileLocation」)。值) 其中FILEEXISTS是布爾變量,「FileLocation」與文件路徑 字符串變量雖然文件存在於文件夾中,它仍然是給假值。 – user1429135

+0

只是好奇,如果下面給出的解決方案對你有用,如果你能解決你的問題。您的反饋意見對我以及將來遇到類似問題的訪問者都會有所幫助。謝謝。 –

回答

9

變量:

文件夾 - 字符串 - Visual C :: \ TEMP \

文件 - 字符串 - 1.txt的

FILEEXISTS - 布爾 - 假

public void Main() 
{ 
    string folder = Dts.Variables["User::folder"].Value.ToString();  //@"C:\temp\"; 
    string file = Dts.Variables["User::file"].Value.ToString();   //"a.txt"; 
    string fullPath = string.Format(@"{0}\{1}", folder, file); 

    Dts.Variables["User::fileExists"].Value = File.Exists(fullPath); 

    Dts.TaskResult = (int)ScriptResults.Success; 
} 
+1

我嘗試了上面的答案,但在我們的環境中運行ssis時出現了錯誤。目標調用引發了異常。 – user2756589

+0

請確保將這些變量傳遞給腳本;文件夾和文件爲ReadOnly,fileExists爲ReadWrite –

1

作爲替代具有「走出去」的變量,你也可以更改Dts.TaskResult基於文件是否存在。如果文件不存在,下面的代碼片段將使腳本任務失敗。 (它還創建一個日誌條目,如果啓用了日誌記錄。)

public void Main() 
{ 
    string fileName = Dts.Variables["User::sourcePath"].Value.ToString() + Dts.Variables["User::fileName"].Value.ToString(); 

    if (File.Exists(fileName)) 
    { 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 
    else 
    { 
     Dts.Log(string.Format("File {0} was not found.",fileName),0,null); 
     Dts.TaskResult = (int)ScriptResults.Failure; 
    } 

} 
4

您可以使用Foreach Loop Container,只是所有的物品放到它。它將在文件存在時執行,如果不存在則執行。非常簡單:)

+0

非常好!我正在尋找一些簡單易用的工具,並且工作正常。 – Vladimir

相關問題