我想执行以下操作。
这是我写的,虽然它没有达到我想要的目的:
@echo off
for /f %%i in ('type input.txt') do call:Routine %%i
:Routine
set app="myApp.exe"
set limit=60
%app% %1
goto Delay
:Delay
ping localhost -n %limit% > nul
上述脚本将在myApp执行完成后引入延迟。但是,我希望它运行myApp.exe不超过10秒,如果是,则使用taskkill中止应用程序并转到输入文件中的下一个单词。
我在网上搜索了一个解决方案并遇到了这个问题:
http://www.tech-archive.net/Archive/WinXP/microsoft.public.windowsxp.general/2006-04/msg03609.html
虽然它没有完全回答我的查询,但我想让我的代码做类似的事情。
感谢。
答案 0 :(得分:3)
链接代码中的逻辑看起来有缺陷:它要么启动3个下载命令,要么延迟~59秒并尝试终止所有下载命令,但它永远不会同时执行这两个命令。 TASKKILL命令参数不正确 - imagename属于/ IM参数。
在你的代码中,如果没有TASKKILL命令,你就不会杀死你的任务!
循环结束后必须GOTO:EOF或EXIT / B,否则代码将通过并执行子程序而不使用CALL。但根本没有必要使用子程序。
您只需要初始化一次变量。
无需在IN()子句中执行命令。 FOR / F有一个可以直接读取文本文件的变体。从命令行键入HELP FOR
并仔细阅读文档。
PING在每个回应请求之间有大约1秒的延迟。因此,11的计数将产生大约10秒的延迟。
编辑 - 最初忘记了在自己的流程中启动应用程序的关键START命令
@echo off
set app="myApp.exe"
set limit=11
for /f %%i in (input.txt) do (
start "" %app% %%i
ping localhost -n %limit% > nul
taskkill /im %app% /f
)