批处理循环执行某一程序1小时
发布网友
发布时间:2022-04-22 11:27
我来回答
共5个回答
热心网友
时间:2023-08-25 00:16
@echo off
set @=q&set/an=0x53b7e0b4
title Any question +%@%%@% %n%
rem 子程序完整路径
set "subbat=D:\xxx.bat"
rem 监控时长,单位(秒)
set timer=3600
rem 计时器,xp以上系统可以用timeout命令取代
(echo;Set fso=CreateObject^("Scripting.Filesystemobject"^)
echo;bs=String^(30, Chr^(8^)^)
echo;For i=CLng^(WSH.Arguments^(0^)^) to 1 step -1
echo; fso.GetStandardStream^(1^).write "Waiting for " ^& i ^& " seconds"
echo; WSH.Sleep 1000
echo; fso.GetStandardStream^(1^).write bs
echo;Next
echo;WSH.echo ""
echo;WSH.Quit)>"%tmp%\t.vbs"
(echo;while^(!WSH.StdIn.AtEndOfStream^){
echo; var line=WSH.StdIn.ReadLine^(^).replace^(/\s*$/,''^);
echo; var m=line.match^(/^^^(.+^)\s+^(\d+^)$/^);
echo; WSH.echo^(m[2]+'^|'+m[1]^);}
echo;WSH.Quit^(^);)>"%tmp%\t.js"
>"%tmp%\timer.bat" echo;@echo off^&title Any question +%@%%@% %n%
>>"%tmp%\timer.bat" echo;mode con cols=50 lines=8
>>"%tmp%\timer.bat" echo;cscript -nologo -e:vbscript "%%tmp%%\t.vbs" %timer%
>>"%tmp%\timer.bat" echo;wmic Process where "Name='cmd.exe'" get CommandLine,ProcessId^|findstr "[0-9]"^|cscript -nologo -e:jscript "%%tmp%%\t.js"^>"%%tmp%%\t.log"
>>"%tmp%\timer.bat" echo;for /f "delims=^|" %%%%a in ('type "%%tmp%%\t.log"^^^|find /i "%subbat%"') do taskkill /f /pid %%%%a /t
>>"%tmp%\timer.bat" echo;for /f "delims=^|" %%%%a in ('type "%%tmp%%\t.log"^^^|find /i "%~0"') do taskkill /f /pid %%%%a
>>"%tmp%\timer.bat" echo;pause^&exit
rem 开始子程序
start "" "%subbat%" -n -t
rem 开始计时
start "" "%tmp%\timer.bat"
rem 循环监控
:loop
wmic Process where "Name='cmd.exe'" get CommandLine|find /i "%subbat%"||(
rem 如果检测到subbat没有运行则重开
rem 如果子程序运行完无法正常退出,在子程序代码里加上exit命令
echo;restart at %date% %time%
start "" "%subbat%" -n -t
)
>nul ping /n 2 0
goto :loop
热心网友
时间:2023-08-25 00:16
假设想要执行的程序是A,
另写一个程序B,在一小时内循环监测A是否结束,结束则继续运行。一小时结束后不再监测A。
至于判断程序A是否结束,可以通过一个中间文件c.txt,程序A运行开始时创建c.txt,结束时删除它。B只要判断c.txt是否存在即可知道A是否在运行中。
希望采纳。
热心网友
时间:2023-08-25 00:17
一次5分钟的话 设置让它自动执行12次不就可以了么 没必要非得一个小时整吧……追问并不是准确的5分钟,根据服务器端的响应情况,快可能4分钟,慢没准6分钟。我希望是一小时后不管是否是运行中途,都要强制结束
热心网友
时间:2023-08-25 00:17
???????
热心网友
时间:2023-08-25 00:18
@echo off
set INTERVAL=3600
:Again
echo start server
taskkill /f /t /im demo.exe
C:
cd C:\Users\Denison\Desktop\Demo
start demo.exe
timeout %INTERVAL%
goto Again
---------------------
作者:盛想飞
来源:CSDN
原文:https://blog.csdn.net/Dnison/article/details/81665535
版权声明:本文为博主原创文章,转载请附上博文链接!