Windows 命令行时间限制

Windows 命令行时间限制

我该如何限制 Windows 中命令行程序的执行时间?我知道 Linux 中有timeout/timelimit可用,但我找不到适用于 Windows 的类似实用程序。

答案1

start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe

如果您将其放入记事本并保存,.bat它将创建一个执行此操作的批处理文件。

我以 10 秒为例,只需根据您的需要进行调整即可。

另外,如果你使用的是 Vista 或更高版本,你可以删除该ping行并使用更简单的timeout命令代替它

timeout /t 10

答案2

据我所知,似乎不存在这样的功能,但我认为如果您通过任务计划程序使其作为 Windows 任务运行,它是可行的,从那里您可以设置执行限制,设置名称如下:如果任务运行时间超过以下时间则停止任务:,你可以从这里获得更多详细信息:http://technet.microsoft.com/en-us/library/cc722178.aspx

答案3

如果您不介意使用 PowerShell: $app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'将使用 test.txt 参数启动记事本(您可以用 . 分隔多个参数),

Start-Sleep -Seconds 10将睡眠 10 秒。

要么$app.Kill()要么taskkill /PID $app.Id都会终止已启动的应用程序。

如果您更喜欢 cmd 解决方案,该解决方案将仅调用 PowerShell 来启动进程,然后将其 PID 存储在变量中:( for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A从 .bat/.cmd 调用时,您必须使用%%A而不是%A)。然后,您可以使用 @BaliC 的超时方法并taskkill /PID %PID%终止已启动的应用程序。

答案4

在 PowerShell 中比在 cmd 中更容易,因为有一个Wait-Job命令为此。你可以像这样运行你的应用程序

$timeout = 60
$job = sajb { yourprogram.exe }; if (-not ($job | wjb -T $timeout)) { spjb $job }

notepad $PROFILE但是,通过在 PowerShell 中运行并粘贴此代码片段,可以更轻松地将其放入配置文件中的函数中以供重复使用

Function Invoke-WithTimeOut {
    Param (
        [int]$timeout,
        [scriptblock]$script
    )

    $job = Start-Job $script
    $done = $job | Wait-Job -TimeOut $timeout
    if (-not $done) { Stop-Job $job }
}

然后您可以在任何 PowerShell 会话中使用它。例如,yourprogram.exe以 40 秒超时运行

Invoke-WithTimeOut 40 { yourprogram.exe }

与其他解决方案不同,即使同一应用程序有多个实例在运行,此方法也能正常工作taskkill。此外,如果命令在超时之前退出,它会立即返回,因此您不必等待整个时间

您可以更换Start-JobStart-ThreadJob以获得更好的性能,但在正常情况下,它们并没有什么区别

如果确实需要 cmd,那么您可以从批处理文件中调用它

powershell -NoProfile -ExecutionPolicy Bypass -C "Invoke-WithTimeOut 40 { yourprogram.exe }"

从 Windows 10(1607 及以上版本)开始,还有一个原生解决方案

ScriptRunner.exe -appvscript yourprogram "with" "args" -appvscriptrunnerparameters -wait -timeout=60

如果您将Start-Job/更改Start-ThreadJobWait-JobStart-ProcessWait-Process那么结果将与上面的 ScriptRunner 解决方案相同

相关内容