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

[系统相关] 请老师给注释一下这个批处理

[复制链接]
发表于 2022-5-9 12:12:05 | 显示全部楼层 |阅读模式
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
set _task=foxtable
set _runexe=start.vbs

:checkstart
echo "检查进程"
for /f "tokens=5" %%c in ('qprocess.exe ^| find "%_task%"') do ( if %%c==" " ( @echo ) else goto checkag  )
goto startsvr

:startsvr

echo ******开始启动程序*******

echo 启动时间 %time%  >> restart.log  

echo set ws=wscript.createobject("wscript.shell") >> %_runexe%
echo ws.run "foxtable.exe",0,false >> %_runexe%   

start /b %_runexe%


echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs

cscript //b //nologo %tmp%\delay.vbs 10000

del %_runexe% /Q

echo *******程序启动完成********

goto checkstart


:checkag

echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs

cscript //b //nologo %tmp%\delay.vbs 10000

goto checkstart
发表于 2022-5-9 12:45:44 | 显示全部楼层
  1. @echo off
  2. if "%1" == "h" goto begin
  3. @REM 强制跳转:begin
  4. mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
  5. :begin
  6. set _task=foxtable
  7. set _runexe=start.vbs

  8. :checkstart
  9. @REM 若进程%_task%存在,则延迟10秒;若进程不存在,则启动程序.反复循环
  10. echo "检查进程"
  11. for /f "tokens=5" %%c in ('qprocess.exe ^| find "%_task%"') do ( if %%c==" " ( @echo ) else goto checkag  )
  12. goto startsvr

  13. :startsvr

  14. echo ******开始启动程序*******

  15. echo 启动时间 %time%  >> restart.log  
  16. @REM 用start.vbs,隐藏窗口启动程序
  17. echo set ws=wscript.createobject("wscript.shell") >> %_runexe%
  18. echo ws.run "foxtable.exe",0,false >> %_runexe%   

  19. start /b %_runexe%

  20. @REM 延迟10秒后删除start.vbs,继续检测进程
  21. echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs

  22. cscript //b //nologo %tmp%\delay.vbs 10000

  23. del %_runexe% /Q

  24. echo *******程序启动完成********

  25. goto checkstart


  26. :checkag
  27. @REM 延迟10秒
  28. echo Wscript.Sleep Wscript.Arguments(0) >%tmp%\delay.vbs

  29. cscript //b //nologo %tmp%\delay.vbs 10000

  30. goto checkstart
复制代码
 楼主| 发表于 2022-5-9 16:02:03 | 显示全部楼层
非常感谢老师的答复。我用这个批处理监控一个系统,想达到如果这个系统没有运行,自动运行的目的。但实际使用中偶而会出现同时启动了多个系统的情况,不知是什么原因。
发表于 2022-5-10 23:27:20 | 显示全部楼层
我曾经写过检测server-U运行的bat,server-U运行有两个程序,两个必须同时都运行才可提供服务。
我的办法是tasklist同时监控两个,如果都存在就判定正常运行。否则taskill程序再启动。

如果楼主也是这样,可这样应用。监控一个程序,如果有,进入延时-再查 的循环。

tasklist|findstr /i "123.exe"&&goto ys || start "" "123.exe"
:ys
ping /n 120 127.1>nul
%0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 00:42 , Processed in 0.017511 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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