每小时停止并启动批处理文件

每小时停止并启动批处理文件

我有一个批处理脚本,它启动一个在 cmd.exe 中运行的程序。我尝试使用任务计划程序创建一个任务,该任务每小时停止此 cmd shell 并启动一个新的,但无济于事。还有其他方法可以每小时停止和启动相同的 cmd 和批处理脚本吗?

我尝试用以下方法制作另一批:

Taskkill /IM cmd.exe

并安排它每小时运行一次,但由于此批处理也在 cmd shell 中运行,因此它只会自行终止,而不会终止先前运行的 cmd shell。

如能提供每隔 x 个间隔停止并重新启动同一个 cmd shell 的帮助,我们将不胜感激。

问候

少林

编辑:

我之所以希望每隔 x 个间隔重新启动此程序,是因为此特定程序容易挂起,它可能会在 10 分钟或 10 小时后挂起。为了谨慎起见,我希望每小时重新启动一次。

答案1

目前还不清楚你想要实现什么以及为什么,但我认为批处理脚本不适合这个工作(尤其是在 2013 年)。

Powershell 将为您提供更可预测的结果并允许您提供更好的可靠性,例如:

$application = "C:\Windows\System32\notepad.exe"
$sleepTime = 10
$i = 1

while ($i = 1){
    Write-Host "Starting Process"
    $process = Start-Process $application -PassThru

    Write-Host "Waiting " $sleepTime "seconds"
    Start-Sleep -Seconds $sleepTime

    if(!$process.HasExited){
        Write-Host "Killing Process"
        $process.Kill()
    }else{
        echo "Process had already ended"
    }

    Start-Sleep -Seconds 2
}

尽管我很确定一定有比使用无限循环更好的答案。

答案2

这听起来更像是一个逻辑问题。在批处理脚本中,您可以键入 exit 以在逻辑中关闭 cmd 窗口。否则,您可以查看在 powershell 中使用 stop-process 和 start-process。我想我们需要更多信息来了解“为什么”您每小时都需要一个新的 cmd 窗口。

答案3

您应该能够添加 /IF“CPUTIME gt 00:30:00”

taskkill /IM cmd.exe /IF "CPUTIME gt 00:29:00"

相关内容