Board logo

标题: [文本处理] 求助批处理日志生成 [打印本页]

作者: cattan    时间: 2021-7-8 10:47     标题: 求助批处理日志生成

  1. @echo off
  2. rem
  3. set AppName=MTC_OUT.exe
  4. set AppPath=D:\fjeit\MTC_OUT\
  5. title 出口收费软件看门狗程序
  6. cls
  7. echo.
  8. echo 看门狗程序每隔15分钟监控一次……
  9. echo 该软件用于内部交流和学习
  10. echo.
  11. rem 定义循环体
  12. :startjc
  13.    rem 从进程列表中查找指定进程
  14.    rem  下面语句也可写成 qprocess %AppName% >nul
  15.    qprocess|findstr /i %AppName% >nul
  16.    rem
  17.    if %errorlevel%==0 (
  18.          echo ^>%date:~0,10% %time:~0,8% 软件正在运行……
  19.     )else (
  20.            echo ^>%date:~0,10% %time:~0,8% 没有发现软件进程
  21.            echo ^>%date:~0,10% %time:~0,8% 正在重新启动软件
  22.            start %AppPath%%AppName% 2>nul && echo ^>%date:~0,10% %time:~0,8% 启动软件
  23.    )
  24.    rem 用ping命令来实现延时运行
  25.    for /l %%i in (1,1,10) do ping -n 1 -w 1000 168.20.0.1>nul
  26.    goto startjc
  27. echo on
复制代码
如何让这个批处理文件生成日志.txt。 不要CMD窗口啊?
作者: yakeyun    时间: 2021-7-8 13:46

本帖最后由 yakeyun 于 2021-7-8 16:13 编辑

@echo off
::隐藏窗口
if "%1" neq "1" (
>"%temp%\tmp.vbs" echo set WshShell = WScript.CreateObject^(^"WScript.Shell^"^)
>>"%temp%\tmp.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0
start /d "%temp%" tmp.vbs
exit
)
::执行代码
title 出口收费软件看门狗程序
::从进程列表中查找指定进程
:start
tasklist /nh>C:\kill.ini
@find /I /C "MTC_OUT.exe" C:\kill.ini > nul
if %ERRORLEVEL% == 0 (
  ping 127.1 -n 10 >nul
  goto start
) else (
  goto END
)
:END
start D:\fjeit\MTC_OUT\MTC_OUT.exe
echo %date%%time%   程序已退出,将重新启动! >>c:\log.ini
ping 127.1 -n 10 >nul
goto start
)
exit
作者: cattan    时间: 2021-7-8 15:27

你这个只生成了前面(软件已退出,将重新启动。)这个日志啊
并没有生成软件运行状态的日志啊 已经测试了
作者: yakeyun    时间: 2021-7-8 16:08

本帖最后由 yakeyun 于 2021-7-8 16:23 编辑

回复 3# cattan


   重新写了一个新的,试下看看。日志只会记录进程结束后重新启动的过程,本身每10秒检测一次进程,达到了实时检测,所以正常状态不用记录。
作者: yakeyun    时间: 2021-7-8 16:35

本帖最后由 yakeyun 于 2021-7-9 01:03 编辑

回复 3# cattan


如果一定要都记录,就用这个15分钟检测一次进程:

@echo off
::隐藏窗口
if "%1" neq "1" (
>"%temp%\tmp.vbs" echo set WshShell = WScript.CreateObject^(^"WScript.Shell^"^)
>>"%temp%\tmp.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0
start /d "%temp%" tmp.vbs
exit
)
::执行代码
title 出口收费软件看门狗程序
::从进程列表中查找指定进程
:start
tasklist /nh>C:\kill.ini
@find /I /C "MTC_OUT.exe" C:\kill.ini > nul
if %ERRORLEVEL% == 0 (
echo %date%%time%   当前程序进程正常运行。 >>c:\log.ini
ping 127.1 -n 900 >nul
goto start
) else (
goto END
)
:END
start D:\fjeit\MTC_OUT\MTC_OUT.exe
echo %date%%time%   程序已退出,将重新启动! >>c:\log.ini
ping 127.1 -n 900 >nul
goto start
)
exit




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