在Windows命令提示符下,当我想使用输入/输出文件运行程序时,我总是使用如下命令的批处理命令:test.exe< input.in> output.out。 (test.exe是程序的名称,input.it是输入文件的名称,output.out是输出文件的名称)
但是,如果我使用此命令,我无法为该程序设置时间限制(即我不能强制程序在一段时间后退出)。 那么我应该使用什么命令才能做到这一点?谢谢你的帮助。
答案 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