找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21756|回复: 4

[文件操作] 如果调用运行最小的bat

[复制链接]
发表于 2022-8-10 23:23:28 | 显示全部楼层 |阅读模式
我想,把  这句:
  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
发表于 2022-8-11 00:05:00 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2022-8-11 12:07:21 | 显示全部楼层
@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
 楼主| 发表于 2022-8-11 12:08:59 | 显示全部楼层
系统找不到文件    运行的是d:\test\.bat

上面路径没写对于,对于,也这个结果。
发表于 2022-8-11 15:03:06 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 18:15 , Processed in 0.019381 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表