2012-02-15 30 views
0

我正在嘗試檢查我的XenApp服務器上spoolsv.exe進程的狀態。我已經將命令從XP工作站單獨運行,但似乎無法讓它遍歷文本文件。這是我到目前爲止,什麼會使我的CMD屏幕上填充Servers X-XX?如何自動執行我的工作站上的Tasklist命令以檢查X個服務器上的特定進程?

@echo off 

FOR /F "usebackq" %%G IN ("C:\Documents and Settings\userid\Desktop\Scripts\servers.txt") DO echo tasklist /S %%G /u domain\userid | find "spoolsv.exe" 

pause 

我似乎無法得到它的正常運行,有時它只會彈出我的servers.txt文件在記事本中,甚至無法運行。我錯過了什麼?

回答

1

正如您所介紹的,tasklist永遠不會運行。 「do echo tasklist ...」片段意味着文本字符串「tasklist/S server-one ...」正被回顯到stdout。由於這些文字字符串都不包含「spoolsv.exe」,所以「find」命令不會匹配任何內容。

嘗試,而不是執行以下操作:

@echo off 

FOR /F "usebackq" %%G IN ("C:\Documents and Settings\userid\Desktop\Scripts\servers.txt") DO call :RunTasklistForOneServer %%G 

pause 
goto :EOF 

:RunTasklistForOneServer 

set ServerName=%1 
echo Calling server %ServerName% 
tasklist /S %ServerName% /u domain\userid | find "spoolsv.exe" 
+0

當我刪除回聲,它只是一個拉,結果一個真的很快,然後刷新屏幕,並與名單上的下一個覆蓋它。我通過將> output.txt添加到命令的末尾來測試了這一點。我希望讓它們全部列在CMD窗口中,而不是每次迭代通過命令時覆蓋前一個。 – Split71 2012-02-20 20:47:21

+0

使用>表示所有標準輸出將轉到output.txt。如果您使用它,您將不會在控制檯中看到任何標準輸出。如果要查看控制檯中的所有內容,請刪除「>」。如果要將輸出寫入文件,請使用「>>」(兩個大於字符)而不是「>」。 「>>」在「>>」附加時覆蓋現有文件。 – 2012-02-21 16:11:27

+0

美麗的代碼工作。現在,如果我只能在它進入下一個之前坐在那裏,我又增加了一些暫停,但它有時會變得很快。感謝芽! – Split71 2012-02-21 16:39:13

相關問題