Board logo

标题: [文件操作] 如果调用运行最小的bat [打印本页]

作者: iii888iii    时间: 2022-8-10 23:23     标题: 如果调用运行最小的bat

我想,把  这句:
  start "" "%Run%"

改为,调用运行一个bat。这个bat在一个文件夹。   格式是    数字.bat   文件名不确定。

每次调用,数字最小.bat

哪位老师帮忙一下。


下面是原代码:
@echo off & title 敌后任务循环中
color 0a & mode 35,5

::设置监测的进程名
set Proc=A.exe

::设置进程总数
set Number=5

::设置启动的进程,需绝对或相对路径
set Run=C:\B.exe


::开始监测
oop
cls & echo 进程监测中。。
set Num=0
for /f "delims=" %%a in ('tasklist ^| findstr /i "%Proc%" 2^>nul') do set /a Num+=1

if %Num% lss %Number% (
    echo, & color 0c
    echo 进程缺失,当前只有 %Num% 个进程。
    echo 启动相关指定进程后,继续监测。
    start "" "%Run%"
    ping 127.0.0.1 -n "2">nul
    color 0a
) else (
    echo, & echo 进程一切正常。
)

::等待300秒后继续监测
ping 127.0.0.1 -n "300">nul
goto Loop
作者: flashercs    时间: 2022-8-11 00:05

  1. setlocal enabledelayedexpansion
  2. set min=2147483647
  3. for %%A in ("d:\test\*.bat") do (
  4.   if %%~nA lss !min! set min=%%~nA
  5. )
  6. start "" "d:\test\%min%.bat"
  7. endlocal
复制代码

作者: iii888iii    时间: 2022-8-11 12:07

@echo off & title 敌后任务循环中
color 0a & mode 35,5

setlocal enabledelayedexpansion
set min=2147483647
for %%A in ("C:\Users\Administrator\Desktop\开机\d敌后循环\敌后没做\*.bat") do (
  if %%~nA lss !min! set min=%%~nA
)

endlocal

::设置监测的进程名
set Proc=vmware-vmx.exe

::设置进程总数
set Number=15

::设置启动的进程,需绝对或相对路径
set Run=C:\B.exe


::开始监测
oop
cls & echo 进程监测中。。
set Num=0
for /f "delims=" %%a in ('tasklist ^| findstr /i "%Proc%" 2^>nul') do set /a Num+=1

if %Num% lss %Number% (
    echo, & color 0c
    echo 进程缺失,当前只有 %Num% 个进程。
    echo 启动相关指定进程后,继续监测。
    ping 127.0.0.1 -n "2">nul
start "" "d:\test\%min%.bat"

    ping 127.0.0.1 -n "2">nul
    color 0a
) else (
    echo, & echo 进程一切正常。
)

pause
exit
作者: iii888iii    时间: 2022-8-11 12:08

系统找不到文件    运行的是d:\test\.bat

上面路径没写对于,对于,也这个结果。
作者: Batcher    时间: 2022-8-11 15:03

回复 3# iii888iii


开启变量延迟扩展
  1. @echo off
  2. REM 设置监测的进程名
  3. set "Proc=A.exe"
  4. REM 设置进程总数
  5. set "Number=5"
  6. REM 设置待调用的bat所在文件夹的完整路径
  7. set "Run=D:\test"
  8. REM 开始监测
  9. :Loop
  10. set "Num=0"
  11. for /f "delims=" %%a in ('tasklist ^| findstr /i "%Proc%" 2^>nul') do (
  12.     set /a Num+=1
  13. )
  14. if %Num% lss %Number% (
  15.     echo 进程缺失,当前只有 %Num% 个进程。
  16.     echo 启动相关指定进程后,继续监测。
  17.     setlocal enabledelayedexpansion
  18.     set "min=2147483647"
  19.     for %%A in ("%Run%\*.bat") do (
  20.         if %%~nA lss !min! (
  21.             set min=%%~nA
  22.         )
  23.     )
  24.     start "" "%Run%\!min!.bat"
  25.     endlocal
  26. ) else (
  27.     echo 进程一切正常。
  28. )
  29. REM 等待300秒后继续监测
  30. ping 127.0.0.1 -n 300 >nul
  31. goto :Loop
复制代码





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