如何使用输入/输出文件启动.exe文件并批量设置时间限制?

时间:2013-12-05 09:18:01

标签: batch-file

在Windows命令提示符下,当我想使用输入/输出文件运行程序时,我总是使用如下命令的批处理命令:test.exe< input.in> output.out。 (test.exe是程序的名称,input.it是输入文件的名称,output.out是输出文件的名称)

但是,如果我使用此命令,我无法为该程序设置时间限制(即我不能强制程序在一段时间后退出)。 那么我应该使用什么命令才能做到这一点?谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用taskkill命令:

start test.exe
ping 127.0.0.1 -n 5
taskkill /im test.exe /f 

这里它在5秒后被杀死。您可以指定任何持续时间(以秒为单位)。

答案 1 :(得分:0)

start "" /b cmd /c "test.exe <input.in >output.out"
timeout /t 10
tasklist | find "test.exe" >nul && taskkill /f /im test.exe

在未连接到当前控制台的cmd实例中启动程序,等待10秒,如果程序仍在任务列表中,则将其删除

编辑 - 更新以处理评论中指出的案例

@echo off
    setlocal enableextensions

    start "" /b cmd /c "test.exe <input.in >output.out"

    call :timeoutProcess "test.exe" 10
    if errorlevel 1 (
        echo Program has been killed
    ) else (
        echo Program has ended in time
    )

    exit /b


:timeoutProcess process timeout
    for /l %%t in (1 1 %~2) do (
        timeout.exe /t 1 >nul
        tasklist | find "%~1" >nul || exit /b 0
    )
    taskkill /f /im "%~1" >nul 
    exit /b 1