0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何防止脚本重复运行

汽车电子技术 来源:安卓脚本 作者:Dcrclub 2023-03-03 14:07 次阅读

这个问题可以利用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();


//判断引擎对象中是否包含本脚本的路径以及名称数量 大于1
var 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;
    }, {});
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14637
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21038
收藏 人收藏

    评论

    相关推荐

    如何优化HLS仿真脚本运行时间

    需求:由于自己目前一个 HLS 仿真脚本需要运行 1个多小时,先打算通过打印时间戳的方式找出最耗时的部分,然后想办法优化。
    的头像 发表于 02-23 09:29 263次阅读

    MATLAB脚本运行出错

    错误1050发生于 双串口 2.vi中的LabVIEW:执行脚本时出错。来自服务器的错误消息:??? 错误使用 eig对于广义特征值问题 EIG(A,B),A 和 B 的大小必须相同。出错
    发表于 03-09 09:44

    请问.zjs脚本怎么编写和运行

    .zjs脚本怎么编写、运行
    发表于 08-18 06:25

    Qualcomm_Snapdragon_VR_SDK SvrEye脚本简介(2)

    的,因此程序运行后需要对Instances进行赋值。在SvrEye脚本中实在Awake的方法里对Instances进行赋值的。 void Awake() { Instances.Add
    发表于 09-26 18:21

    如何使用脚本运行ISE/VIVADO

    嗨,专家我以前在Windows下设计,最近我搬到了linux。是否有关于如何使用脚本运行ISE / VIVADO的指南,例如Perl的?谢谢。克里斯以上来自于谷歌翻译以下为原文Hi, experts
    发表于 02-19 10:59

    WinForm C net阻止重复执行的方法

    WinForm Cnet防止一个程序 WinForm 重复运行的方法
    发表于 04-29 16:47

    rex防止脚本还没执行完成就立刻发起怎么回事

    rex 防止脚本还没执行完成,就立刻发起
    发表于 04-28 11:38

    什么是脚本

    什么是脚本脚本是什么意思,脚本错误是什么意思电子发烧友深入为大家讲解了脚本相关知识
    发表于 12-07 10:36 2619次阅读

    怎样用Wamp服务器运行PHP脚本

    今天让我解释一下如何使用wamp服务器运行PHP文件。您可以使用此方法来运行您可能从某个地方获得的PHP脚本,并且几乎不需要或几乎不了解PHP。您可以通过输出为Web浏览器的Web服务器执行
    的头像 发表于 10-05 17:37 6735次阅读
    怎样用Wamp服务器<b class='flag-5'>运行</b>PHP<b class='flag-5'>脚本</b>

    什么是脚本脚本程序学习

    脚本中编写VB脚本代码。可以象使用系统函数一样使用项目中完成的脚本。创建脚本时,确定其型号并定义传送参数。“Function”类型的脚本
    的头像 发表于 05-11 10:39 6098次阅读
    什么是<b class='flag-5'>脚本</b>?<b class='flag-5'>脚本</b>程序学习

    如何在Linux命令行中运行Python脚本

    Python 脚本。 在本文中,我们将详细介绍如何在 Linux 命令行中运行 Python 脚本。我们将讨论以下主题:
    的头像 发表于 05-12 14:49 1373次阅读

    注射器防止重复使用回推测试仪

    防止重复使用回推测试仪是依据YY /T 0573.4-2020 一次性使用无菌注射器第4部分:防止重复使用注射器中的相关标准设计制造的。注射器是指由塑料材料制成,带针或不带针的,用于抽
    的头像 发表于 02-07 18:02 403次阅读
    注射器<b class='flag-5'>防止</b><b class='flag-5'>重复</b>使用回推测试仪

    ie浏览器限制运行脚本

    IE浏览器限制运行脚本是指在Internet Explorer浏览器中,存在一些限制和安全策略,以保护用户的电脑免受恶意脚本的攻击。这些限制有助于防止在浏览器中执行恶意代码,保护用户的隐私和电脑
    的头像 发表于 11-26 11:19 749次阅读

    js脚本怎么在浏览器中运行

    在浏览器中运行JavaScript脚本是一种常见的方式,因为JavaScript是一种在Web浏览器中执行的脚本语言。下面是一个详细的,最少1500字的文章,介绍如何在浏览器中运行
    的头像 发表于 11-27 16:46 1416次阅读

    redis锁incres防止重复提交

    。Redis的原子性操作和分布式锁机制提供了一种解决方案,通过使用Redis的INCR命令和锁机制,可以防止重复提交。 一、Redis的原子性操作和INCR命令 在多线程或分布式环境下,多个请求可能同时对同一个计数器进行操作,如果不使用原子性操作,就
    的头像 发表于 12-04 13:50 259次阅读