の助けを借りてこれを実現できるオプションの 1 つを次に示しますScript Task
。次の例は、これを行う方法を示しています。この例は、SSIS 2008 R2 で作成されました。
段階的なプロセス:
スクリーンショット # 1に示すように、フォルダ パス2011-0619
に2011-0626
とという名前の 3 つのフォルダを作成します。各フォルダーの値をメモします。2011-0703
C:\temp\
Date created
スクリーンショット # 2~ # 4に示すように、各フォルダーにいくつかのファイルを配置します。
SSIS パッケージで、スクリーンショット # 5に示すように 4 つの変数を作成します。変数RootFolderに値を設定しますC:\temp\
(この場合、これは c:\data になります)。変数FilePatternに value を設定します*.*
。変数RecentFolderには、スクリプト タスクの最近のフォルダー パスが割り当てられます。設計時のエラーを回避するには、変数RecentFolderに有効なファイル パスを割り当てます。変数FilePathには、最近使用したフォルダーでファイルがループされるときに値が割り当てられます。
SSIS パッケージに、スクリプト タスクを配置します。スクリプト タスク内の Main() メソッドを、「スクリプト タスク コード (最近使ったフォルダーを取得):」セクションにあるスクリプト タスク コードに置き換えます。このスクリプトは、ルート フォルダー内のフォルダーのリストを取得し、ループして作成日時をチェックし、最後に作成されたフォルダーを選択します。最近作成されたフォルダー パスは、変数RecentFolderに格納されます。
SSIS パッケージに Foreach ループ コンテナーを配置し、スクリーンショット # 6と # 7に示すように構成します。
Foreach ループ コンテナー内にスクリプト タスクを配置します。スクリプト タスク内の Main() メソッドを、セクションスクリプト タスク コード (ファイル名の表示)で指定されたスクリプト タスク コードに置き換えます。このスクリプトは、最近作成されたフォルダー内のファイルの名前を表示するだけです。
すべてのタスクが設定されると、パッケージはスクリーンショット # 8に示すようになります。
スクリーンショット # 9~ # 11は、パッケージが最近作成されたフォルダー2011-0703内のファイル名を表示することを示しています。
それが役立つことを願っています。
スクリプト タスク コード (最近使ったフォルダーを取得):
SSIS 2008 以降でのみ使用できるC#コード。
public void Main()
{
Variables varCollection = null;
Dts.VariableDispenser.LockForRead("User::RootFolder");
Dts.VariableDispenser.LockForWrite("User::RecentFolder");
Dts.VariableDispenser.GetVariables(ref varCollection);
string rootFolder = varCollection["User::RootFolder"].Value.ToString();
DateTime previousFolderTime = DateTime.MinValue;
string recentFolder = string.Empty;
foreach (string subFolder in System.IO.Directory.GetDirectories(rootFolder))
{
DateTime currentFolderTime = System.IO.Directory.GetCreationTime(subFolder);
if (previousFolderTime == DateTime.MinValue || previousFolderTime <= currentFolderTime)
{
previousFolderTime = currentFolderTime;
recentFolder = subFolder;
}
}
varCollection["User::RecentFolder"].Value = recentFolder;
Dts.TaskResult = (int)ScriptResults.Success;
}
スクリプト タスク コード (表示ファイル名):
SSIS 2008 以降でのみ使用できるC#コード。
public void Main()
{
Variables varCollection = null;
Dts.VariableDispenser.LockForRead("User::FilePath");
Dts.VariableDispenser.GetVariables(ref varCollection);
MessageBox.Show(varCollection["User::FilePath"].Value.ToString(), "File Path");
Dts.TaskResult = (int)ScriptResults.Success;
}
スクリーンショット #1:

スクリーンショット #2:

スクリーンショット #3:

スクリーンショット #4:

スクリーンショット #5:

スクリーンショット #6:

スクリーンショット #7:

スクリーンショット #8:

スクリーンショット #9:

スクリーンショット #10:

スクリーンショット #11:
