Windows 搜索PC列表|如果服务正在运行,请将PC名称复制到文件

Windows 搜索PC列表|如果服务正在运行,请将PC名称复制到文件,windows,batch-file,command-line-interface,Windows,Batch File,Command Line Interface,我有下面的批处理文件,它将获取服务器名称列表“servers.txt”,并将各个名称插入到服务控制命令中 for /f %%a in (servers.txt) do ( sc \\%%a query "service_name" ) 这将简单地告诉我服务是否正在运行。对于大约900多台服务器的列表,我想要完成的是,如果发现服务在特定服务器上运行,请将该服务器名附加到一个文件中 比如: for /f %%a in (servers.txt) do ( sc \\%%a query "servi

我有下面的批处理文件,它将获取服务器名称列表“servers.txt”,并将各个名称插入到服务控制命令中

for /f %%a in (servers.txt) do (
sc \\%%a query "service_name"
)
这将简单地告诉我服务是否正在运行。对于大约900多台服务器的列表,我想要完成的是,如果发现服务在特定服务器上运行,请将该服务器名附加到一个文件中

比如:

for /f %%a in (servers.txt) do (
sc \\%%a query "service_name" | findstr /i "Running" %%a >> "running.txt"
)
我已经尝试过在有和没有if语句的情况下使用它,goto,但很明显我的语法是错误的

谢谢


/bt

出于某种原因,上面的内容没有写入txt文件。它只是在命令行中打印上面的所有内容。我也试过这样做:
for/f%%a in(servers.txt)do(sc\\%%a查询“service_name”| findstr/i“Running”%%a>nul 2>&1&&echo%%a*>*“Running.txt”)
@btgream yes。我忘记了重定向。它是否与
>>
一起工作?奇怪地得到了完全相同的结果。出于某种原因仍然没有写入文本文件。CLI输出:(sc\\SERVERNAME query“service_name”| findstr/i“Running”SERVERNAME>nul 2>&1&&echo SERVERNAME)1>>Running.txt非常奇怪。是否将“service_name”替换为您自己的服务?wmic/node:@C:\Users\ComputerName.txt“service where”name='wudfsvc'和start='true',获取名称、启动、状态/格式:htable>Services.html
for /f "tokens=* delims=" %%a in (servers.txt) do (
sc \\%%a query "service_name" 2>&1 | findstr /i "Running" >nul 2>&1 && echo %%a 
)>>running.txt
wmic /node:"@c:\servers.txt" service where "name='wudfsvc'" get name, started, status /format:hform > Services.html