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

[文本处理] 求助批处理日志生成

[复制链接]
发表于 2021-7-8 10:47:09 | 显示全部楼层 |阅读模式
  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窗口啊?
发表于 2021-7-8 13:46:17 | 显示全部楼层
本帖最后由 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
 楼主| 发表于 2021-7-8 15:27:53 | 显示全部楼层
你这个只生成了前面(软件已退出,将重新启动。)这个日志啊
并没有生成软件运行状态的日志啊 已经测试了
发表于 2021-7-8 16:08:02 | 显示全部楼层
本帖最后由 yakeyun 于 2021-7-8 16:23 编辑

回复 3# cattan


   重新写了一个新的,试下看看。日志只会记录进程结束后重新启动的过程,本身每10秒检测一次进程,达到了实时检测,所以正常状态不用记录。
发表于 2021-7-8 16:35:37 | 显示全部楼层
本帖最后由 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 18:00 , Processed in 0.031297 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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