課題:
Automation Anywhere A360であるフォルダにあるファイルを読み込み、
順に処理をさせる際、ランダムな順序で読み込んでしまう。
これを更新日時が新しい順や古い順に処理させたい。
解決方法:
いろいろな方法があると思いますが、シンプルに実装出来るよう、今回はコマンドプロンプトを使用します。
(A360側にこういう機能が早く実装されてくれても良いんですが)
dir コマンド
コマンドプロンプトでフォルダ以下のファイル一覧を取得するのに使用する、dirコマンドを使います。
このコマンドのオプションで以下のような事が実現できます。
- 更新日時順にソートする (/O-d)
- Botが読み出しやすいようにファイル/フォルダ名だけを出力する (/B)
- フォルダは出力対象外にする (/A-d)
- テキストファイルに書き出し、存在しない場合は作成して書き出し
例えばファイルの一覧を取得する対象が"c:\Demo2"で、
結果をc:\Demo2\result.txtに書き出したい場合、以下のように記述します。
dir /O-d /A-d /B c:\Demo2\ >c:\Demo2\result.txt
コマンドプロンプトを起動して、どんな風な出力が出てくるか試してみてください。
コマンドプロンプトをA2019から呼び出し、引数でdirコマンド以下を渡す
以下のようなBotを作ります。
- cmd.exeを呼び出し、dirコマンド以下を実行。
- /c dir /O-d /A-d /B c:\Demo2\ >c:\Demo2\result.txt という具合に、cmd.exeに/cオプションを追加すると、それ以降のコマンドをそのまま実行してくれます。
- 上記コマンドで出力されたresult.txtを開く(区切り文字は"改行")
- 上記ファイルの行数分だけ反復処理
- 読み取ったファイル名をメッセージボックスで表示
- CSV/TXTファイルを閉じる。
結果
この通り、ファイルの更新日時が新しい順にリストが生成されてますので、
あとはCSV/Textを開く、ループ アクションで読み取ってあげれば、この通りに読み取ります。
実際の業務ではメッセージボックスを入れた個所に、行いたい処理が入るようなイメージです。