Windows命令行时间限制


9

如何限制Windows中命令行程序的执行时间?我知道在Linux中有可用的超时/时间限制,但是我一直无法找到类似的Windows实用程序。


最好编写一个Powershell或Python脚本来执行此操作。
突破

Answers:


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

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

我以10秒为例,只是调整您的需求。

另外,如果您使用的是Vista或更高版本,则可以取消该ping行,并timeout在该位置使用更简单的命令

timeout /t 10

1
这将如何处理参数和程序的多个实例?如果start返回PID,那就好了,但是没有这种运气……

您可以使用传递参数start yourprogram.exe yourarguments。是的,它可以taskkill选择按PID杀死,但是您必须tasklist首先根据名称将其提取,如果您有多个实例,则将其从第一个平方中提取出来。这只是cmd的限制。
Bali C

1
+1使用ping作为超时定时器是个好主意:)
kol 2012年

追加> NULping命令以压缩其输出。
starbeamrainbowlabs

4

据我所知,似乎不存在这样的函数,但是我认为如果通过Task Scheduler使它作为Windows任务运行是可行的,从那里您可以设置执行限制,该设置名为:如果任务运行则停止任务超过:,您可以从此处获得更多详细信息:http : //technet.microsoft.com/zh-cn/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将杀死启动的应用程序。

如果您希望仅调用PowerShell的cmd解决方案来启动该过程,然后将其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%杀死启动的应用程序。


1

解决方案:

在Windows中,需要制作三个批处理文件

进程蝙蝠

@ECHO OFF
start   /b cm.bat
start  cmd.exe /c run.bat
EXIT

蝙蝠

@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT

运行

@ECHO off
timeout /t 5
taskkill /im a.exe /f 
taskkill /im cmd.exe /f

EXIT

现在运行process.bat。它将同时/并行启动cm.bat和run.bat。当cm.bat中的a.exe终止时;cm.bat杀死run.bat,因此它将作为ubuntu超时工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.