我正在使用for循环执行另一个可执行文件并捕获输出。输出是一组变量,例如
Name=Jim
Address=1234 Main Ave
Phone=425-555-0202
但是,此可执行文件需要相当长的时间才能运行。我正在通过以下方式捕获输出并设置环境变量:
for /f "tokens=*" %%a in ('fetch.exe <options>') do (
echo "%%a"
set "%%a"
)
这很好,但是,如果fetch.exe需要120秒才能运行,则该循环的回显部分要等到120秒后该过程完成后才能运行。一个简单的测试是创建一个批处理文件,例如
@echo 1
@echo 2
@echo 3
@echo 4
timeout /t 30
然后从命令行通过for /f "tokens=*" %a in ('call test.cmd') do (@echo "%a")
调用
30秒内您将看不到任何输出。
如何立即开始查看正在执行的命令的输出?
答案 0 :(得分:1)
如前所述,Parallel.ForEach( methods , ( currentMethod ) => currentMethod.Invoke() );
无法处理此问题,因为它等待被调用命令的完成。
但是您可以使用异步模式来实现它。
生产者在其自己的线程中工作。
FOR /F