[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理怎样检测应用程序是否重复运行?

本帖最后由 ANSL 于 2022-5-12 08:36 编辑

我有一个bat一重复运行就会出现严重的BUG我要把它转exe装完了出现同样的BUG能不能用bat检测自己是否重复运行?

本帖最后由 yakeyun 于 2022-5-11 19:58 编辑

回复 3# ANSL


代码执行速度过快,且执行结束加了PAUSE命令的就没效果(可以把“timeout -t 20” 命令删除,然后把“exit”改成“pause”测试一下)。
给你一个案例,你可以尝试把“timeout -t 20” 命令加入,或者删除体验一下:
运行正常:
  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "%~dp0
  3. if not exist jiaoyan.dll (>jiaoyan.dll echo,我是校验文件) else (exit)
  4. title AMI主板BIOS信息查看工具v1.0 By.JT.sanli
  5. for /f "delims== tokens=1,*" %%a in ('wmic baseboard get Product^/value ^|find "="') do set "name=%%b"
  6. for /f "delims== tokens=1,*" %%c in ('wmic bios get SMBIOSBIOSVersion^/value ^|find "="') do set "bios=%%d"
  7. echo,主板型号:%name%   BIOS版本:%bios%
  8. echo.
  9. timeout -t 20
  10. if exist jiaoyan.dll (del jiaoyan.dll)
  11. exit
复制代码
运行失效:
  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "%~dp0
  3. if not exist jiaoyan.dll (>jiaoyan.dll echo,我是校验文件) else (exit)
  4. title AMI主板BIOS信息查看工具v1.0 By.JT.sanli
  5. for /f "delims== tokens=1,*" %%a in ('wmic baseboard get Product^/value ^|find "="') do set "name=%%b"
  6. for /f "delims== tokens=1,*" %%c in ('wmic bios get SMBIOSBIOSVersion^/value ^|find "="') do set "bios=%%d"
  7. echo,主板型号:%name%   BIOS版本:%bios%
  8. echo.
  9. if exist jiaoyan.dll (del jiaoyan.dll)
  10. pause
复制代码
1

评分人数

    • ANSL: 已解决!技术 + 1

TOP

回复 2# yakeyun





我试了一下怎么不行呢?

TOP

回复 1# ANSL

批处理开头加入:
if not exist jiaoyan.dll (>jiaoyan.dll echo,我是校验文件) else (exit)


运行结束退出前一步加入:

if exist jiaoyan.dll (del jiaoyan.dll)
1

评分人数

    • ANSL: 谢谢!技术 + 1

TOP

返回列表