FloderWatch是来也UiBot Creator的一款插件,指定文件类型,监测指定文件夹,当指定文件夹出现新增指定类型的文件时,返回新增文件的文件名。
看到UiBot论坛里有人问”如何定时在下载目录中判断有没有新增文件?”,一种思路是定时获取文件列表,然后获取一下数组的最大下标,2进行比较,变多了就说明文件新增了,然后去找新增文件。
这种轮询的方式不够优雅,实际上.net有一个FileSystemWatcher类,可以在文件发生变化的时候发送通知,这种Push的方式才是正解。
正好之前用Powershell调用FileSystemWatcher类实现了类似功能,有一个小缺点是Powershell无法知道RPA的运行状态,UiBot为Python调用提供了IsStop()函数,可以判断RPA已停止,于是用Python重写了一个新增文件监测FolderWatch插件。
插件名称:新增文件监测FolderWatch
功能:指定文件类型,监测指定文件夹,当指定文件夹出现新增指定类型的文件时,返回新增文件的文件名。
适用场景:获取扫描图片、下载、FTP等文件夹的新增文件,以便进行下一步自动化操作。
使用方法:
将ZIP解压到extend\python目录下,包括FolderWatch.lib文件夹和FolderWatch.py
UB调用代码
Import FolderWatch
Dim sNewFile
sNewFile=FolderWatch.Watch(“d:\desktop”,”*.jpg”)
Traceprint(sNewFile)
3. d:\deskop文件夹如创建了新的jpg文件,函数将返回该文件的路径。
- FolderWatch.Watch(参数1,参数2),参数1为要监测的文件夹,注意转义,参数2为要监测的文件类型,例如”.txt”,”.*”等
其他说明:
本插件基于Python的WatchDog,最终调用Windows的FileSystemWatcher类,可以在文件发生变化的时候实时发送通知,避免了定时轮询文件夹获取列表进行比较的方式。
修改FolderWatch.py,可以实现在文件删除、文件修改等其他事件时发送通知。
监测时是阻塞的,可以把下一步自动化操作放在函数的下一个语句。
监测是实时的,实测可以轻松实现批量自动化操作。
Import FolderWatch
Dim sNewFile
Do While True
sNewFile=FolderWatch.Watch(“d:\a8”,”*.jpg”)
TracePrint(sNewFile)
// Send sNewFile to OCR
// Send sNewFile to Email
//…
Loop
5. 插件调用了UiBot的IsStop(),停止机器人时插件也会停止监测。
下载地址: https://www.ostoys.com/2022/09/23/FolderWatch/FolderWatch.zip