オートメーション道場

RPAツール「Automation 360」(旧Automation Anywhere A2019) の使い方についてまとめていきます。

フォルダ内の各ファイルを新しい順に繰り返す

フォルダ内の各ファイルを新しい順に繰り返す

Automation Anywhere A2019 で 特定のフォルダ内のファイル操作処理を特定の順番で行うには、DOSのdirコマンドのテキスト出力の順番で操作を行います。

目次

 

「アプリケーション : プログラム/ファイルを開く」アクションでdirコマンドを使う方法

「ループ」アクションの「反復子=ファイル」を使った操作は、特定のフォルダの中の全ファイルをランダムの順番でリスト化してくれますが、特定の条件で並べ替えたファイル一覧 (ファイル名、拡張子、更新日時、ファイルサイズ) を取得するか、特定のファイル属性のファイル一覧を得るには、「アプリケーション : プログラム/ファイルを開く」アクションDOSのdirコマンドを特定のスイッチをつけて実行し、そこで得られたファイル一覧を元に処理を行います。出力結果はリダイレクトを使って一時フォルダー内のテキストファイルに出力します。

 

参考: dirコマンドのスイッチ

ディレクトリ中のファイルとサブディレクトリを一覧表示します。

DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]ソート順]] [/P] [/Q] [/R] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]

[ドライブ:][パス][ファイル名]
一覧表示するドライブ、ディレクトリ、またはファイルを指定します。

/A           指定された属性のファイルを表示します。
属性        D ディレクトリ            R 読み取り専用
               H 隠しファイル            A アーカイブ
               S システム ファイル     I 非インデックス対象ファイル
               L 再解析ポイント         O オフライン ファイル
               - その属性以外
/B           ファイル名のみを表示します (見出しや要約が付きません)。
/C           ファイル サイズを桁区切り表示します。これは既定の設定です。/-C とすると桁区切りが表示されません。
/D           /W と同じですが、ファイルを列で並べ替えた一覧を表示します。
/L           小文字で表示します。
/N           ファイル名を右端に表示する一覧形式を使用します。
/O           ファイルを並べ替えて表示します。
sortorder   N 名前順 (アルファベット)            S サイズ順 (小さい方から)
                  E   拡張子順 (アルファベット)       D 日時順 (古い方から)
                  G   グループ (ディレクトリから)    - 降順
/P           1 画面ごとに一時停止して表示します。
/Q           ファイルの所有者を表示します。
/R           ファイルの代替データ ストリームを表示します。
/S           指定されたディレクトリおよびそのサブディレクトリのすべてのファイルを表示します。
/T           どのタイム フィールドを表示するか、または並べ替えに使用するかを指定します。
タイムフィールド C 作成
                              A 最終アクセス
                              W 最終更新
/W           ワイド一覧形式で表示します。
/X           このオプションは 8dot3 形式以外のファイル名に対する短い名前を表示します。長い名前の前に短い名前を表示する点を除けば/N オプションと同じです。短い名前がない場合は、ブランクになります。
/4           4 つの数字で年を表示します。

環境変数 DIRCMD にスイッチを設定できます。
/-W のように - (ハイフン) を付けると、そのスイッチは無効になります。

Dirコマンドスイッチで使える組合せ (c:\temp が一時フォルダの場合)

  • 更新日時
    • cmd.exe /c dir  /a-d /o-d /b > c:\temp\dir.txt
      フォルダを除く全ファイルを更新日時降順でファイル名のみ一覧出力
    • cmd.exe /c dir  /a-d /od /b > c:\temp\dir.txt
      フォルダを除く全ファイルを更新日時昇順でファイル名のみ一覧出力
  • ファイルサイズ
    • cmd.exe /c dir  /a-d /o-s /b > c:\temp\dir.txt
      フォルダを除く全ファイルをファイルサイズ降順でファイル名のみ一覧出力
    • cmd.exe /c dir  /a-d /os /b > c:\temp\dir.txt
      フォルダを除く全ファイルをファイルサイズ昇順でファイル名のみ一覧出力
  • ファイル名
    • cmd.exe /c dir  /a-d /o-n /b > c:\temp\dir.txt
      フォルダを除く全ファイルをファイル名降順でファイル名のみ一覧出力
    • cmd.exe /c dir  /a-d /on /b > c:\temp\dir.txt
      フォルダを除く全ファイルをファイル名昇順でファイル名のみ一覧出力
  • 拡張子
    • cmd.exe /c dir  /a-d /o-e /b > c:\temp\dir.txt
      フォルダを除く全ファイルを拡張子名降順でファイル名のみ一覧出力
    • cmd.exe /c dir  /a-d /oe /b > c:\temp\dir.txt
      フォルダを除く全ファイルを拡張子名昇順でファイル名のみ一覧出力

この方法のいいところは、ファイル一覧を取得する操作はdirコマンドのオプションの変更にすべて集約してしまうことができ、Automation Anywhere側のアクションは同じでよいことです。このため、さまざまな応用が利き、複雑なファイル一覧の取得を行っても、RPA側のロジックは複雑にならずに常に一定になるため、プログラマでない人にとっては扱いやすいものになります。

 

課題: フォルダ内の各ファイルを新しい順に繰り返す

対象フォルダ "C:\"

解法:

  1. レコード型変数 $filelist$をあらかじめ作成しておきます。
  2. 「アプリケーション : プログラム/ファイルを開く」アクションを配置します。
  3.  アクションの詳細パネルで以下を指定します。
    • 「プログラム/ファイルの場所」に「cmd.exe」を指定します。
    • 「パスの最初の部分 (オプション)」に「C:\」を指定します。
    • 「パラメータ (オプション)」に「/c dir  /a-d /o-d /b > c:\temp\dir.txt」を指定します。
  4. CSV/TXT : 開く」アクションを配置します。
  5.  アクションの詳細パネルで以下を指定します。
    • 「ファイルパス」に「c:\temp\dir.txt」を指定します。
    • エンコード」に「ANSI」を指定します。
  6. 「ループ : ループ」アクションを配置します。
  7.  アクションの詳細パネルで以下を指定します。
    • 「反復子」に「CSV/TXT : CSV/TXTの各行に対して」を指定します。
    • 「この変数に現在の行を代入」にレコード型変数「filelist」を指定します。
  8. ループの中に「メッセージボックス : メッセージボックス」アクションを配置してアクションの詳細パネルの「表示するメッセージを入力します」に $filelist[0]$ を指定します。
  9. 保存して実行します。

完成したボット

完成したボット

結果:

メッセージボックスが1ファイルずつ表示されます。更新日時が新しいファイル順に表示されます。(以下は例)

pagefile.sys
swapfile.sys
... 

解説: 一時フォルダの中にできるdir.txtの中の情報も

pagefile.sys
swapfile.sys
... 

という形式になります。

 

課題: フォルダ内の各ファイルをサイズが小さい順に繰り返す

対象フォルダ "C:\"

解法:

  1. レコード型変数 $filelist$をあらかじめ作成しておきます。
  2. 「アプリケーション : プログラム/ファイルを開く」アクションを配置します。
  3.  アクションの詳細パネルで以下を指定します。
    • 「プログラム/ファイルの場所」に「cmd.exe」を指定します。
    • 「パスの最初の部分 (オプション)」に「C:\」を指定します。
    • 「パラメータ (オプション)」に「/c dir  /a-d /os /b > c:\temp\dir.txt」を指定します。
  4. CSV/TXT : 開く」アクションを配置します。
  5.  アクションの詳細パネルで以下を指定します。
    • 「ファイルパス」に「c:\temp\dir.txt」を指定します。
    • エンコード」に「ANSI」を指定します。
  6. 「ループ : ループ」アクションを配置します。
  7.  アクションの詳細パネルで以下を指定します。
    • 「反復子」に「CSV/TXT : CSV/TXTの各行に対して」を指定します。
    • 「この変数に現在の行を代入」にレコード型変数「filelist」を指定します。
  8. ループの中に「メッセージボックス : メッセージボックス」アクションを配置してアクションの詳細パネルの「表示するメッセージを入力します」に $filelist[0]$ を指定します。
  9. 保存して実行します。

完成したボット

完成したボット

結果:

メッセージボックスが1ファイルずつ表示されます。サイズが小さいファイル順に表示されます。(以下は例)

pagefile.sys
swapfile.sys
... 

 

オートメーション道場