LoginSignup
5
4

More than 3 years have passed since last update.

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

Posted at

概要

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

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でも作れそうです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4