2016-06-19 7 views
1

を使用し、私は変数に加工されているファイル名を格納したいと思いますか?後でこの変数(ファイル名)を使用してこれらのファイルを処理済みフォルダに移動します。私は、データフロータスクが各ファイルを処理し、ファイル名をオブジェクトのスクリプトタスクにループ内で格納するforeachループを使用しています。ストアの文字列値と後で

string filename = Dts.Variables["User::FILE_NAME"].Value.ToString(); 
object proccessed_file_name; 
proccessed_file_name += filename; 
Dts.Variables["User::FILE_NAME"].Value = proccessed_file_name; 

Plsは文字列値をオブジェクトに格納し、後でこのパッケージで使用するのに役立ちます。

答えて

0

あなたは、スクリプトタスクのみ1変数User::FILE_NAMEせずにそれを行うことができます。ディレクトリ上の

使用foreach loopは、そのタスクからFILE_NAMEを取り込みます。データフロー変換を使用してファイルを処理します。次に、ファイルを移動します。その後、あなたのforeach loopを続行させてください。ファイルを徐々に移動することによって、正常に処理されたファイルと、何が失敗したのかを正確に知ることができ、正常に処理されたファイルをロールバックすることなくプロセスを再開することができます。

あなたはすべてのものを移動するのを待つしたい場合は、2段階の移動を行うことができます。 1と同じロジックで、元のディレクトリの.processedや何かに名前を変更するだけです。その後、そのループが終了したら、別のforeachを処理済みファイルに追加し、同じFILE_NAME変数を使用してファイルを移動します。

のいずれかの状況でscript taskの必要はありません。

あなたが本当にscript taskを使用したい場合。あなたのforeach loopDFTの後にscript taskを入れてください。別の変数objectを入力してください。この変数にはdatatableなどが入ります。 DataTableにファイル名などを入力します。foreachの後にテーブルをロードし、処理するファイル名を取得するanother script taskが必要です。正直なところ、最後のステップでsystem.ioを使い、スクリプト内のファイルを移動するのが最も簡単です。

あなたのような datatableなものである変数を使用する方法を

(と私は、これはおそらく、追加の手順やエラーチェックが必要になりますので、自由に本を書いていますが。)

File_Name変数読みやすく、DataTableにファイル名を移入するにはDataTableVariableNameをスクリプトタスクに読み書きすると、次のような文字列で始まります。

この行の前に私は実際にユーザーvariable.valueのヌルをテストする必要があります。私は肯定的ではありません。

system.data.datatable dt = (system.data.datatable)Dts.Variables["User::DataTableVariableName"].Value; 

if (dt == null) 
{ 
    Write code to create your datatable 
} 
Add new DataRow to table -- lots of results on web about this and creating datatable. 

ここではdatatableがあります。 foreach loopの後にscript taskを追加して、処理されたファイルを移動します。

再びdatatableをループ、変数

system.data.datatable dt = (system.data.datatable)Dts.Variables["User::DataTableVariableName"].Value; 

からテーブルを検索して起動し、私もここにファイルを移動することをお勧め。

foreach (dt datarow in dt.rows) 
{ 
    typically I like to suggest copying and then deleting the source file depending on how you over write. so you would do something like. 
If (system.io.file.Exists(dr.["FileNameRowLable"].ToString()) 
{ 
    system.io.file.copy(source, destination); 
    if (file.exists(destination)) 
    { 
     file.delete(source); 
    } 
} 
} 

私はあなたが文句を言わないスクリプトタスクを必要とする、あなたのF oreach loopにファイルを移動すると幸せに付着することになると思います。

関連する問題