首页 > 解决方案 > 批处理文件循环IP systeminfo

问题描述

我试图弄清楚如何让批处理文件循环遍历文本上的 ips 列表,然后将文件的结果导出systeminfo到另一个文件中。

因此,例如 - 我的rackipsonly.txt文件具有以下数据:

10.1.1.1
10.1.1.2
10.1.1.3
etc...

我想要一个批处理来读取每一行的 IP 并返回主机名和正常运行时间并将其返回到输出文件UP_Log.txt

这是我到目前为止所得到的,但无法将它带到我需要它工作的地方

@echo off
for /f %%a in ("C:\rackiponly.txt") do (
    echo.   
    echo %%A >> "C:\UP_LOG.txt"
    systeminfo /s:%%A | findstr /C:"Host Name:" >> "C:\UP_LOG.txt"
    systeminfo /s:%%A | findstr /C:"System Boot Time" >> "C:\UP_LOG.txt"
)

标签: loopsbatch-fileip

解决方案


正如 Compo 建议的那样:

  • 只运行一次 systeminfo
  • 使用 findstr 的默认正则表达式模式和锚定在 line begin 的正则表达式(用点替换搜索字符串中的空格;空格在OR条件中组合搜索字符串)

:: Q:\Test\2018\10\01\SO_52594783.cmd
@echo off
Set "IPs=C:\rackiponly.txt"
(Echo:[%date% %time:~0,8%] Started processing %IPs% 
    for /f "usebackq" %%a in ("%IPs%") do (
        echo.   
        echo.%%A
        systeminfo /s:%%A | findstr /I "^Host.Name ^System.Boot.Time"
    )
) >> "C:\UP_LOG.txt"

推荐阅读