如何防止脚本重复运行

这个问题可以利用autojs本身提供的脚本引擎模块来判断.
已知任何系统在相同的路径下,不可能出现两个相同的文件名,因此思路就是在脚本运行的开始, 获取自身的脚本文件名称和脚本所在路径,然后获取所有正在运行的脚本.并提取出所有脚本的脚本名和脚本路径. 再利用本身的脚本名和路径去比对,如果相同的脚本名和路径名存在数量大于1则可证明本次脚本的运行是重复运行的,此时结束掉脚本即可.
代码逻辑如下:
//获取所有正在运行的脚本引擎对象var allengines = engines.all();var strarry = [];for (let i of allengines) { strarry.push(i.source); strarry.push(i.cwd());}//获取当前脚本的执行路径以及脚本名称var name = engines.myengine().getsource();var path = engines.myengine().cwd();//判断引擎对象中是否包含本脚本的路径以及名称数量 大于1var result = statisticalfieldnumber(strarry);var namecounts = result[name];var pathcounts = result[path];if (namecounts > 1 && pathcounts > 1) { toast(当前脚本正在运行,无需重复执行.); exit();}//5秒后弹一个toast,结束运行settimeout(function() { toastlog(end);}, 5000)/** * 该方法判断出传入的数组中所有元素相同的个数,返回一个对象 * @param {arry} arr 一个数组 */function statisticalfieldnumber(arr) { return arr.reduce(function (prev, next) { prev[next] = (prev[next] + 1) || 1; return prev; }, {});}

Lonworks通讯协议在智能家居系统是如何应用的
保时捷不会在中国市场建厂,无法保持溢价
一名程序员的五年工作感悟
微型化自由运行单光子探测器的设计实现
服务器品牌有哪些?服务器的参数介绍
如何防止脚本重复运行
20亿“分手费”道珍重 高通恩智浦各奔前程
板式给料机链条磨损过快原因分析和解决办法
realme手机官宣旗下6400万像素新机将于9月17日
Cortex-M3入门指南(二):寄存器
瑞萨电子的重生
指纹锁常见破解方式_怎么防止防盗门指纹锁被破解
英特尔并行工作室XE 2017新进展
变频器维修小技巧,5例很有代表性的故障
一种基于直接法的动态稠密SLAM方案
北汽新能源一季度销量同比下滑较大 1-2月纯电车型销量依然位列行业第二
诺基亚回归颠覆之作:诺基亚9,全面屏,价格感人
比亚迪储能业务划转至电池事业部
波士顿动力又上新啦!
移动通讯杂散测试