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

[文件操作] 如果调用运行最小的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

  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
复制代码
微信:flashercs
QQ:49908356

TOP

@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

TOP

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

上面路径没写对于,对于,也这个结果。

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表