2012-06-27 263 views
1

我有一个调用程序的批处理文件,但我想停止小时h 后,该程序例如我的批处理都会有这样的代码批处理文件:停止进程

@echo off 
........ 
....... 
............ 
call myprogram.exe 

是有办法h小时后停止myprogram.exe?

回答

3
REM delay for 36000 seconds (10 hours) 
FOR /l %%a in (36000,-1,1) do (Echo closing in %%as&ping -n 2 -w 1 127.0.0.1>NUL) 
REM delete the program using it's PID 
FOR /f "tokens=2" %a in ('tasklist ^| find "notepad.exe"') do tskill %a 

使用ping意味着它在XP,Vista和Windows 7 (和,我会假设运8)

+0

这不会工作,例如,如果我打电话myprogram.exe它不会执行这个之后的其他命令,直到myprogram.exe停止 – Leo92

+1

使用'开始myprogram.exe' - 这将继续执行程序启动后的批处理文件。你实际上必须指定'/ W'或'/ WAIT'来让它暂停,直到程序结束 – SeanC

+0

现在谢谢你的意思,干杯 – Leo92

0

尝试使用批处理文件taskkill

taskkill /IM myprogram.exe 

至于它已经运行小时h后停止程序,我不知道如何来调用。如果你有特定的时间想要停止它,你可以使用像Windows计划任务一样简单的事情。

否则,您可以尝试使用像FireDaemon这样的服务管理应用程序将myprogram.exe设置为Windows服务,并将其安排在h小时后关闭。不幸的是,FireDaemon不是免费的,但它肯定会胜任这项任务。

1

这将是容易得多,假设你使用Vista或以上

start myprogram.exe 
timeout /t 3600 
taskkill /im myprogram.exe /f 

只需用您的时间延迟(以秒为单位)替换3600即可。