编写bat文件实现对制定文件夹下最新版本文件进行监测运行
@echo off
setlocal enabledelayedexpansion
set src_dir=c:\a
set last_time=0
rem 遍历源文件夹里的文件
rem 把文件名用下划线_作为分隔符分成2个部分
rem 第2部分就是备份时间,比较其数值,数值越大则表示文件越新
rem %%~na取出文件名中的时间
for /r "%src_dir%" %%a in (*.exe) do (
for /f "tokens=2 delims=-" %%b in ("%%~na") do (
if "%%b" gtr "!last_time!" (
set last_time=%%b
set last_name=%%a)
)
)
set _task=notepad.exe
set _svr=c:windows\notepad.exe
set _des=start.bat
:checkstart
for /f "tokens=5" %%n in ('qprocess.exe ^| find "%_task%" ') do (
if %%n==%_task% (goto checkag) else goto startsvr
)
:startsvr
echo %time%
echo ********程序开始启动********
echo 程序重新启动于 %time% ,请检查系统日志 >> restart_service.txt
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
set/p=.<nul
for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
del %_des% /Q
echo ********程序启动完成********
goto checkstart
:checkag
echo %time% 程序运行正常,10秒后继续检查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
goto checkstart
这个是代码,我现在C盘中a文件夹下,有四个notepad.exe,分别命名为notepad-1.exe,notepad-2.exe
,notepad-3.exe,notepad-4.exe,用来做测试,后期的话有一个制定文件夹,里面会有一个随着时间更新的文件,所以我想能每次保证最新版本总是在运行,如果最新版本进程死了,就把这个进程从新启动,并且自动扫描文件夹中是否有最新版本