【UiPath】ファイル一覧を比較して差分だけ残す


概要

前日に保存した画像ファイルと今日保存した画像ファイルの差分をとり、

今日新規追加された画像のみ残し、前日と同じファイルは削除します。

2019/05/22保存分

image.png

2019/05/23保存分

image.png


背景

他のエンジニアさんが前述の処理を実装していたのですが、前日と今日の画像ファイルを二重ループでチェックしており、処理に非常に時間がかかっていました。

前日1000ファイル×当日1000ファイル=1000×1000ループ

となり、指数関数的に処理時間が延びていくことになります。

数秒で終わらせたいと思い、Invode Codeを使って実現してみました。


フローチャート

image.png

image.png


  1. 前日のファイル一覧を取得

    image.png


  2. 今日のファイル一覧を取得

    image.png


  3. 前日と今日のファイル一覧を比較し、同じファイル名だったファイルをListに格納。

    格納するのは今日のフォルダ内のファイルパスです。


Code

image.png

Dim ys, td As String

result = New List(Of String)
For Each ys In ysImgFiles
For Each td In tdImgFiles
Dim ysfileNm, tdfileNm As String
ysfileNm = Path.GetFileName(ys)
tdfileNm = Path.GetFileName(td)
If tdfileNm.Equals(ysfileNm) Then
result.Add(td)
Exit For
End If
Next
Next

Argument

image.png


  1. 同ファイル名リストをもとに、今日のフォルダ内から全削除します。

Code

image.png

Dim d As String

For Each d In delFiles
File.Delete(d)
Next


実行結果

新規追加された画像ファイルのみ残っています。

処理時間はほんの数秒です。

image.png


補足

VB.NETのコードでやっていることなので、Blue Prismでも作れそうです。