一、后台运行Uipath
@echo off
start cmd /k "cd/d C:\Users\15010323266\AppData\Local\UiPath\app-19.9.2 &&UiRobot.exe -file "D:\invoke\first.xaml"&&taskkill /f /t /im cmd.exe"
以上两行另存为.bat
这是第一种方法
解释 1.cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。
2.cd/d c:\ 里的/d 就是直接切换到该文件夹
3.打开 cmd 不关闭cmd 窗口" 进入 存放UiRobot.exe 执行文件的路径 &&UiRobot.exe 打开文件".xaml文件存放的路径" && 关闭进程 cmd.exe"
@echo off
cd C:\Users\15010323266\AppData\Local\UiPath\app-19.9.2
.\UiRobot -p 连接机器人
以上三行另存为.bat
这是第二种方法
解释 1.进入UiRobot.exe 执行文件的路径
2.打开进程process 连接机器人
二、大批量字符串处理
str.substring(str.indexOf("截取的头部标识字符串"))
str.substring(0,str,indexOf("截取的尾部标识字符串","截取的尾部标识字符串".length)),indexOf的第二个参数是从第几位开始查找
str.split(vbcrlf.ToCharArray,StringSplitOptions.RemoveEmptyEntries),字符串按照换行进行拆分,拆分成数组,
StringSplitOptions.RemoveEmptyEntries是去除拆分完成后空白的元素
三、Pick和Monitor Events结合可以写多种方案出来,因为单独走Monitor Events,要么流程卡在一个地方,要么卡死在一个地方,两者结合,刚刚好。
Pick的用法
Pick需要结合PickBranch一起使用,在PickBranch中,分为上下两部分,上面是Trigger,作为识别触发动作的地方,下面是action。
两边的trigger都会执行,trigger中也可以放其他active,但是action只会执行一个。
Pick的逻辑是这样的,两个分支的Trigger部分会并行执行(但其实各个分支的启动还是有细微的时间差的,这个在此先不讨论),
哪一个分支的Trigger先运行完毕,就会运行那一个分支的Action部分并且其它分支会停止执行。
Monitor Events 监控事件
分上下两部分,上面放trigger类型的active,一旦上面的触发真的发生了,下面Event Handler的动作就会依次执行。
如果上面的触发不发生,流程就会一直卡在这里,Event Handler的动作就不会发生。
属性中的RepeatForever,值为Boolean,当选择False时,触发一次就结束Monitor,当为True时,执行一次后会循环回来重新等待触发。
四、日期类型属性
1、日期类型是由多个属性组成
Year:是指日期的年份
Month:是指日期的月份
Day:是指日期的日
Hour:是指日期的小时
Minute:是指日期的分钟数
Second:是指日期的秒钟数Millisecond:是指日期的毫秒数
Date:是指日期的日期部分,时间部分全部为0
DayOfWeek:是指日期星期数
DayOfYear:是指日期在一年中的第N天
TimeOfDay:是指日期的时间部分。
Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以来所经历的 100 纳秒数,即Ticks的属性为100纳秒(1Ticks = 0.0001毫秒)
五、日期字符串类型格式互转
1、日期转换成字符串函数是将日期型变量转换成特定格式的函数ToString():它把日期转换成操作系统默认的日期时间类型;
ToString(“格式”):日期格式:小写Y代表年,大写M代表月、小写d代表天,大写H代表小时,小写m代表分钟,小写s代表秒,小写f代表毫秒.;
如:Now.ToString(“yyyy-MM-dd HH:mm:ss fff”),格式可以换成其他格式符号,也可以只取任何一部分,
如获取小时数Now.ToString(“HH”)或者Now.ToString(“H”);
ToLongDateString():它将日期转换成长日期格式。格式如:Thurday,14 November 2019;
ToShortDateString():它将日期转换成短日期格式。格式如:11/14/2019;
ToLongTimeString():它将日期转换成长时间格式。格式如:20:00:00
ToShortTimeString():它将日期转换成短时间格式。格式如:20:00;
2、字符串转成成日期格式DateTime.Para(“日期格式”):日期格式可以只有日期部分,也可以包括时间部分。
如果只有时间部分,将采用系统的日期作为日期部分。
如:DateTime.Para(“yyyy-MM-dd HH:mm:ss”)或者DateTime.Para(“yyyy-MM-dd”)
六、日期格式操作
Add:是指当前日期时间增加一个时间间隔。
如:Now.Add(new TimeSpan(1,2,3,4)),这表示当前时间增加一天二小时三分钟四秒。
如果数据是正整数,则是相加,如果是负整数则是相减,以下如有相似函数同。
AddYears:它表示当前日期增减年数;
AddMonths:它表示当前日期增减月份;
AddDays:它表示当前日期增减天数;
AddMinutes:它表示当前日期增减分钟数;
AddHours:它表示当前日期增减小时数
AddMilliseconds:它表示当前增减毫秒数
CompareTo:它表示当前日期与后面的日期比较,如果大于0则表示它比后者大,反之,则它表后者小
七、Invoke PowerShell By Uipath
将PowerShell命令转换成字符串,在Uipath中调用Invoke power shell,在CommandText中写下前面转化的字符串,属性中勾选IsScript。
八、建立干净整洁的机器人日志
效果如下:
11:15:10.9900 info {"message":"仅换图和全新 状态:待续"...
11:15:10.9900 info {"message":"仅换图和全新 状态:本条记录成功"...
11:15:10.9900 info {"message":"结束123的处理表"...
方法如下:
找到 NLog.Config文件位于UiPath安装文件夹中(通常为C:\ Program Files(x86)\ UiPath Platform)
1、添加变量以仅获取第一条消息
<variable name="truncated_message" value="${replace:replaceWith=...:regex=true:inner=${message}:searchFor=(\,.*$)}"/>
2、.将新变量添加到日志布局
layout="${time}${level}${truncated_message}
整体格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="WorkflowLoggingDirectory" value="${specialfolder:folder=LocalApplicationData}/UiPath/Logs" />
<variable name="truncated_message" value="${replace:replaceWith=...:regex=true:inner=${message}:searchFor=(\,.*$)}" />
<rules>
<logger name="WorkflowLogging" writeTo="WorkflowLogFiles" final="true" />
<logger minLevel="Info" writeTo="EventLog" />
</rules>
<targets>
<target type="File" name="WorkflowLogFiles" fileName="${WorkflowLoggingDirectory}/${shortdate}_Execution.log" layout="${time} ${level} ${truncated_message}" keepFileOpen="true" openFileCacheTimeout="5" concurrentWrites="true" encoding="utf-8" writeBom="true" />
<target type="EventLog" name="EventLog" layout="${processname} ${assembly-version} ${newline}${message}" source="UiPath" log="Application" />
</targets>
</nlog>
九、数据透视表
Uipath实现Excel数据透视表有三种常用的方法,
1、VB.Net,
2、宏,这两种都需要一定的代码量才可以实现,
3、是Uipath封装好的功能
下面两个active皆需要在Excel scope中使用
Create Table,
需要填写的属性有sheet名,表范围,然后定义一个表名,
这个active会把范围内的excel表提供列名上筛选的小三角,然后数据行隔一行加一个颜色
Create Pivot Table,
需要填写的属性有sheet名,写入的起始单元格,上面定义的表名,透视表新定义的表名
这个active会在其实单元格开始出入一张透视表,
唯一的缺点就是,会默认的把数据的所有文本列进行分类,全部数值列进行求和,无法自定义。
十、Arrays
1、Arrays数组定义数组是一系列items 的集合。
数组定义如:New String{“123”,“456”},New Int32{“123”,“456”};
2、Arrays数组属性
Length:是指数组的长度,表示数组中有多少个相同类型的数据;
LongLength:获取一个64位整数,该值表示所有维度的数组中的元素总数;
IsReadOnly:是指数组是否只读;
Rank:是指数组的维数;
IsFixedSize:获取一个值,该值指示数组是否带有固定大小;
GetUpperBound:用于获取Array的指定维度的上限;
GetLowerBound:用于获取Array的指定维度的下限。
3、Arrays数组方法
GetLength:获取数据的长度;
Clone:克隆一个相同数据类型的数组,包括数据;
Contains:是指数组是否包含某个类型的数据,如果有则返回True,反之返回False。
十一、List
1、 Lists的定义
List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。
定义方法如:New List(of string)from{"23","444"}
2、 Lists的属性
Count:表示Lists对象包含相同类型数据的长度;
3、Lists的方法
Add(T item): 添加一个元素如:List变量.Add(“123”);
AddRange: 添加集合元素如:List变量. AddRange ({"23","444"});
Insert(int index,T item): 在index位置添加一个元素。如:List变量.Insert(0, "666"),这是把666字符串放到第一位;
Remove(T item): 删除一个值。如:List变量. Remove (“123”);
Contains(T item): 判断某个元素是否在该List中:如:List变量. Contains (“123”);
Sort():给List里面元素排序, 默认是元素每一个字母按升序。如:List变量. Sort ();
Clear():清空列表如:List变量. Clear ();
Find:搜索与指定谓词所定义的条件相匹配的元素,并返回整个List中的第一个匹配元素
FindAll:检索与指定谓词所定义的条件相匹配的所有元素
RemoveAll: 移除与指定的谓词所定义的条件相匹配的所有元素;
Take(n):获得前n行,T的类型与List<T>的类如:List变量. Take (2);
Where:检索与指定谓词所定义的条件相匹配的所有元素。
十二、Queues
1 、Queues定义
Queue队列就是先进先出。它并没有实现 IList,ICollection。所以它不能按索引访问元素,不能使用Add和Remove。
定义方法:New Queue();
2、Queues属性
Count: 表示Queues对象队列的长度;
3、Queues 方法
Enqueue():在队列的末端添加元素如:Queues变量. Enqueue(“123”);
Dequeue():在队列的头部读取和删除一个元素,注意,这里读取元素的同时也删除了这个元素。如果队列中不再有任何元素。就抛出异常
如:Queues变量. Dequeue (“123”);
Peek():在队列的头读取一个元素,但是不删除它如:Queues变量. Peek (“123”);
Contains():确定某个元素是否在队列中
如:Queues变量. Contains (“123”);
CopyTo():把元素队列复制到一个已有的数组中
如:Queues变量. CopyTo (数组,1),1表示队列的第1个;
ToArray():返回一个包含元素的新数组
如:Queues变量. ToArray ()。