2013-05-16 54 views
-3

我想檢測一個服務器輸出在另一個提示符下運行在Windows cmd提示符下,並觸發其他提示。可能嗎?Windows批處理 - 檢測控制檯輸出

+0

*** wingardium leviosa ****是否做到了這一點? –

+2

@AMR它是wingardium LeviOsa,而不是LevioSA – Eonasdan

+0

lmao .... touche'..... –

回答

0

你在找什麼叫做Named Pipe"FIFO"我不知道如何在windows中做到這一點。我在linux上只在大學學過一次。繼承人的鏈接,好運

命名管道是一個命名的,單向或用於管道服務器和一個或多個管道客戶端之間的通信 複式管。

任何進程都可以充當服務器和客戶端,使對等通信成爲可能。如這裏所使用的,術語管道服務器指的是創建命名管道的過程,而術語管道客戶端指代連接到命名管道的實例的過程 。

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

1

我想你可能能夠做到這一點使用腳本/自動化工具,如AutoIt的。雖然它沒有完全解決,你可以看到下面的鏈接對這個問題的一些想法 - http://www.autoitscript.com/forum/topic/64872-read-from-command-prompt-window/

你是不是真的很清楚你的意思是「服務器輸出」。這是你寫的一個應用程序嗎?如果是這樣,而不是僅僅依靠解析屏幕文本,爲什麼不登錄到一個平面文件,另一個進程可以更容易地讀取內部發現的內容。更好的辦法是登錄到一個數據庫,在那裏你的文件鎖定問題更少。

如果服務器應用程序不是您自己創建的,那麼它是否寫入系統事件日誌?與控制檯窗口相比,這將更容易做出反應。

+0

如果我使用文件進行日誌記錄,我該如何不斷檢查這個文件是否有字符串,並且一旦它出現觸發事件? –

+0

您的「監控程序」將不得不循環,您可以創建計劃任務,並重新啓動您的監控程序,並在發現觸發文本時執行「其他」任務。 –

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要求theOriginalProcess與它的一些合作辦法。您可以在this post以及解決方案this one上閱讀關於此問題的更多描述。

編輯:我開發了一個新版本的異步Tee.bat程序,可以輕鬆修改以解決您的請求。在this post找到它。

+0

@Sairam Sankaran:在我的回答中查看編輯... – Aacini