批量使用“关闭cmd.exe,然后在定时循环中重新执行”

时间:2014-06-11 21:27:48

标签: windows loops batch-file cmd

我有一个批处理文件来运行一个应用程序(我曾经在80年代写过DOS中的一些基本代码),我需要它每隔x小时“重新执行”一次应用程序。我找不到的是如何在再次运行代码之前“关闭”(或停止)应用程序,因此它不会在每个循环中打开几个cmd.exe窗口。我是编码的总菜鸟,但我知道批处理文件的原理

我的实际.bat看起来像这样

setx some-minor-adjustments application.exe -couple-of-variables

然后,它打开通常的cmd.exe窗口,并永远运行应用程序。我需要做的是,不知何故,每隔x小时自动“刷新”(关闭并重新执行)应用程序。

关闭cmd.exe窗口就可以关闭应用程序了,在这个意义上就不需要了(比如要保存的数据)

一位朋友建议使用cron命令,但似乎是出于其他目的。我还通过Internet发现我应该使用start命令在新的cmd.exe窗口中打开应用程序,或类似的东西

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

在Windows上,使用任务计划程序而不是CRON。

任务计划程序中的任务可以设置为在设定的时间后关闭,如果您可以确定最长持续时间。

如果可以假定主命令完成(或生成单独的进程),您还可以在主命令后添加exit命令。

答案 1 :(得分:0)

:BEGIN
start /b mspaint
ping -n 6 localhost
tskill mspaint
GOTO BEGIN

这适用于所有版本的Windows。请记住,您必须将数字6更改为您想要的延迟秒数加上一个,即上述ping语句将产生5秒的延迟。同样,要产生1小时的延迟,你必须写

ping -n 3601 localhost

还要确保批处理文件与可执行文件位于同一文件夹中,否则您必须指定完整路径。

注意:您可以在mspaint.exe命令中使用start,但对于tskill命令,参数应仅为mspaint(无扩展名) )。在这种情况下,@echo off使用ping会有很大帮助,因为-n请求会被回显,并且无法关闭。您可以使用批处理到exe转换器并创建静默无窗口可执行文件。 ping的{​​{1}}参数可能非常大,但必须在几秒钟内完成。