Windows批处理 - 检测控制台输出

时间:2013-05-16 17:20:14

标签: windows batch-file

我想从另一个提示中检测在Windows cmd提示符下运行的服务器输出并触发其他内容。有可能吗?

3 个答案:

答案 0 :(得分:1)

我认为你可能能够使用脚本/自动化工具(如AutoIT)来实现这一目标。虽然没有完全解决,但您可以看到以下链接,以了解有关该问题的一些想法 - http://www.autoitscript.com/forum/topic/64872-read-from-command-prompt-window/

您对于服务器输出"的含义并不十分清楚。这是你写的应用程序吗?如果是这样,不是仅仅依赖于解析屏幕文本,为什么不登录到平面文件,而另一个进程可以更容易地读取其中找到的内容。更好的方法是登录到一个数据库,在这个数据库中你可以减少文件锁定的问题。

如果服务器应用程序不是您自己创建的,那么它是否写入系统事件日志?与控制台窗口相比,这仍然更容易做出反应。

答案 1 :(得分:0)

您要找的是Named Pipe"FIFO"我不知道如何在Windows中执行此操作。我只是在linux大学里做过一次。继承人的链接,祝你好运

  

命名管道是用于通信的命名单向或双向管道   管道服务器和一个或多个管道客户端之间。

     

任何进程都可以充当服务器和客户端,从而实现点对点   沟通可能。这里使用的术语管道服务器是指a   创建命名管道的过程,以及管道客户端引用的术语   连接到命名管道实例的进程。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx

答案 2 :(得分:0)

我很幸运,这可能有用:

theOriginalProcess | theWatcherProcess.bat

这是theWatcherProcess.bat

@echo off
rem Wait for output from theOriginalProcess and read it
set /P outputLine=
rem Trigger something else
echo Output from theOriginalProcess detected!

如果这不起作用,那么theWatcherProcess.bat要求原始进程以某种方式与它合作。您可以在this post阅读有关此问题的进一步说明,以及this one解决此问题的方法。

编辑:我开发了一个新版本的异步Tee.bat程序,可以轻松修改以解决您的请求。在this post查找。