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

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

@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

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

TOP

非常感谢老师的答复。我用这个批处理监控一个系统,想达到如果这个系统没有运行,自动运行的目的。但实际使用中偶而会出现同时启动了多个系统的情况,不知是什么原因。

TOP

我曾经写过检测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
目的,学习批处理

TOP

返回列表