はじめに
複数フォルダから検索条件に該当した最新ファイルを別フォルダにコピーするサンプルシナリオ(以降、本サンプルシナリオ) について説明します。
本サンプルシナリオの概要
本サンプルシナリオは、以下の処理を行います。
- 指定されたフォルダ内から、指定された検索条件と一致するすべてのファイル名とファイルパスを取得します。
- 対象となるファイルと同名のファイルが複数存在する場合は、更新日時を取得します。
- 更新日時を比較し、最新の更新日時を検索します。
- 最新の更新日時を持つファイルを、保存先として指定されたフォルダにコピーします。
使用するWinActorモジュール
本サンプルシナリオでは、以下のWinActorモジュールを使用します。
- ノード/変数/変数値設定
- ノード/変数/カウントアップ
- 03_変数/02_辞書と配列/辞書操作(初期化).ums6
- 03_変数/02_辞書と配列/辞書操作(情報取得).ums6
- 03_変数/02_辞書と配列/辞書操作(情報更新).ums6
- 03_変数/02_辞書と配列/1次元配列操作(初期化).ums6
- 03_変数/02_辞書と配列/1次元配列操作(情報取得).ums6
- 03_変数/02_辞書と配列/1次元配列操作(情報更新).ums6
- 06_文字列比較/後方一致比較.ums6
- 07_文字列操作/03_連結/文字列の連結(3つ).ums6
- 13_ファイル関連/02_ファイル操作/ファイルコピー.ums6
- プチライブラリ/03_変数/02_辞書と配列/1次元配列の要素数を取得するライブラリ
- プチライブラリ/03_変数/02_辞書と配列/辞書から指定したキーと情報を削除するライブラリ
- プチライブラリ/13_ファイル関連/02_ファイル操作/指定したファイルの更新日時を取得するライブラリ
- プチライブラリ/13_ファイル関連/04_ファイル一覧/ファイル検索(サブフォルダを含む)
- プチライブラリ/13_ファイル関連/05_ファイル名/ファイルパスからフォルダパスとファイル名を取得するライブラリ
(プチライブラリはこちらからダウンロードできます)
- スイートライブラリ/08_日付関連/2つの日時を比較
(スイートライブラリはこちらからダウンロードできます)
動作確認環境
本サンプルシナリオは以下の環境で動作確認しています。
- Windows 10
- WinActor 6.3.0、7.1.0
本サンプルシナリオの使い方
本サンプルシナリオの実施方法は以下の通りです。
Step 1. サンプルシナリオの読み込み
ダウンロードしたサンプルシナリオのZIPファイルを展開し、展開したフォルダに含まれている本サンプルシナリオをWinActorで読み込みます。
Step 2. 動作に必要な変数の設定・変更(任意)
本サンプルシナリオを実行するために必要な値を、変数一覧で設定・変更します。
以下の変数を必要に応じて設定・変更してください。
- ファイル検索条件
- ファイル名の検索条件を指定します。
ファイル検索(サブフォルダを含む)ノードの検索条件パラメータと同じ条件指定が可能です。
詳細はファイル検索(サブフォルダを含む)ノードの注釈をご覧ください。
- 検索対象フォルダ名1
- 検索対象となる1つ目のフォルダ名を絶対パスまたは、相対パスで指定します。
例) C:\winactor\Target
- 検索対象フォルダ名2
- 検索対象となる2つ目のフォルダ名を絶対パスまたは、相対パスで指定します。
例) C:\winactor\Target
- 保存先フォルダ
- 保存先のフォルダ名を絶対パスまたは、相対パスで指定します。
例) C:\winactor\Target
変数一覧画面1
Step 3. 動作に必要な変数の確認
本サンプルシナリオを正常に実行するために必要な値が、変更されていないことを確認します。
以下の変数が変更されていないことを確認してください。
- ファイルインデックス
- 検索条件に一致するファイルパスの確認を行うために設定されています。
初期値:1
- ファイル情報一覧辞書
- 辞書の作成を行うために設定されています。
初期値:辞書
- ファイル名一覧配列
- 配列の作成を行うために設定されています。
初期値:配列
- 配列インデックス
- ファイル名の確認を行うために設定されています。
初期値:0
- ループ回数
- 対象ファイルのコピーを行うために設定されています。
初期値:0
変数一覧画面2
Step 4. サンプルシナリオの実行
WinActorで本サンプルシナリオを実行します。
Step 5. サンプルシナリオの終了後の確認
変数一覧内の保存先フォルダに指定したフォルダ内に、変数一覧内のファイル検索条件で指定した検索条件のファイルがコピーされていることを確認してください。
トラブルシューティング
本サンプルシナリオでは、変数指定が不十分であった場合、エラーメッセージが出力されます。
詳細については、エラーメッセージ一覧を参照してください。
サンプルシナリオ解説
本サンプルシナリオで使用している実装テクニックについて解説します。
1. コピー対象となるファイルパスの取得
本サンプルシナリオでは、ファイル情報取得(更新日時)ノードと2つの日時を比較ノード、辞書系ノードを使用して、検索条件と一致するファイル名のうち、最新の更新日時を持つファイルのパスを取得しています。
- 変数一覧内の対象ファイルパス1に設定されているファイルパスからファイル名を取得します。
- 辞書にファイル名をキーとして、ファイルパスを情報に登録します。
- 正常に登録ができたら配列にファイル名を順番に登録し、ファイル名リストを作成します。
- 既に同一のキーが存在する場合は対象となるキーをもとに辞書から情報を取得し、変数一覧内の対象ファイルパス2に設定します。
- 重複したキーの情報を辞書から削除します。
- 対象ファイルパス1に設定されているファイルパスの更新日時と、対象ファイルパス2に設定したファイルパスの更新日時を取得します。
- 対象ファイルパス2に設定したファイルパスと更新日時を結合して、ファイルパスと更新日時を持つファイル情報を作成します。
- 2つの更新日時を比較して最新の更新日時を取得します。
- 作成したファイル情報が持つ更新日時と、取得した最新の更新日時が同一か比較します。
- 同一である場合は、対象ファイルパス2に設定したファイルパスを対象のファイルパスとして、辞書に登録します。
- 異なる場合は、対象ファイルパス1に設定したファイルパスを対象のファイルパスとして、辞書に登録します。
コピー対象のファイルパス取得
2. 検索対象となるフォルダ数の設定
本サンプルシナリオでは、サブルーチン系ノードを使用することで、検索対象となるフォルダ数を任意に設定することが可能です。
検索対象となるフォルダを増やす場合は、以下の手順で行ってください。
例)検索対象となるフォルダに3つ目を追加
- サブルーチン呼び出しノードをコピーします。
- コピー元のサブルーチン呼び出しノードの下にコピーしたサブルーチン呼び出しノードを配置します。
- コピーしたサブルーチン呼び出しノード内の検索対象フォルダ名1に、引数として3つ目のフォルダを指定している変数を指定します。
検索対象フォルダを追加する手順
サブルーチン追加後の引数設定
検索対象となるフォルダを減らす場合は、以下の手順で行ってください。
例)検索対象となるフォルダの2つ目を削除
1.2つ目のサブルーチン呼び出しノードを削除します。
検索対象フォルダを減らす手順