Board logo

标题: [其他] [已解决]批处理怎样检测应用程序是否重复运行? [打印本页]

作者: ANSL    时间: 2022-5-10 15:48     标题: [已解决]批处理怎样检测应用程序是否重复运行?

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

我有一个bat一重复运行就会出现严重的BUG我要把它转exe装完了出现同样的BUG能不能用bat检测自己是否重复运行?
作者: yakeyun    时间: 2022-5-11 00:37

回复 1# ANSL

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


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

if exist jiaoyan.dll (del jiaoyan.dll)
作者: ANSL    时间: 2022-5-11 14:59

回复 2# yakeyun





我试了一下怎么不行呢?

作者: yakeyun    时间: 2022-5-11 19:28

本帖最后由 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2