あなたは、スクリプトタスクのみ1変数User::FILE_NAME
せずにそれを行うことができます。ディレクトリ上の
使用foreach loop
は、そのタスクからFILE_NAME
を取り込みます。データフロー変換を使用してファイルを処理します。次に、ファイルを移動します。その後、あなたのforeach loop
を続行させてください。ファイルを徐々に移動することによって、正常に処理されたファイルと、何が失敗したのかを正確に知ることができ、正常に処理されたファイルをロールバックすることなくプロセスを再開することができます。
あなたはすべてのものを移動するのを待つしたい場合は、2段階の移動を行うことができます。 1と同じロジックで、元のディレクトリの.processedや何かに名前を変更するだけです。その後、そのループが終了したら、別のforeach
を処理済みファイルに追加し、同じFILE_NAME
変数を使用してファイルを移動します。
のいずれかの状況でscript task
の必要はありません。
あなたが本当にscript task
を使用したい場合。あなたのforeach loop
にDFT
の後に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
にファイルを移動すると幸せに付着することになると思います。