2012-02-24 40 views
2

我想在远程机器上搜索进程并传递退出代码,以便可以由另一个进程处理。所以如果进程存在输出退出代码1,如果不是什么都不做。 我写了下面的脚本与另一篇文章的一些帮助。它适用于本地机器/本地进程,但对远程进程/机器不返回任何内容。在下面的脚本中,如果我使用独立的任务列表命令它的作品。远程机器和Findstr传递退出代码的任务列表

@echo off 
setlocal enableDelayedExpansion 

set "cmd=tasklist.exe /NH /s RemoteMachine /u RemoteMachine\administrator /p Password /fi "Imagename eq Install.exe"" 

for /F "delims=*" %%p in ('!cmd! ^| findstr "Install.exe" ') do (
    echo exit 1 
) 

回答

2

我会建议你改变返回退出代码的逻辑。 Windows命令像FINDSTR使用不同的逻辑是:如果有一个匹配,退出代码为0,如果没有比赛,这是1.而且,由于逻辑在FINDSTR已经实现,你可以只使用它:

@tasklist.exe /NH /s RemoteMachine /u RemoteMachine\administrator /p Password /fi "Imagename eq Install.exe" | findstr "Install.exe" >nul 
+1

感谢您的指示。它效果很好。我稍微调整了一下,以便将输出提供给我。 @ TASKLIST.exe/NH/s RemoteMachine/u RemoteMachine \ administrator/p Password/fi“Imagename eq Install.exe”| FINDSTR“没有任务” IF%errorlevel%== 0 echo退出0 IF%errorlevel%== 1 echo退出1 – Kay 2012-03-02 19:07:09

+0

嘿,这是反转结果的巧妙方式! – 2012-03-02 19:11:48