使用批处理程序过滤IP列表

时间:2014-01-21 17:13:03

标签: windows batch-file cmd

我有一个完整的服务器列表,我想检查哪些服务器正在运行,哪些服务器处于脱机状态。所以我想ping一次,看看他们是否回应。我用“findstr TTL”过滤它们。但是现在我想只将IP保存到“result.txt”文件而不是整个字符串,但我不知道如何做到这一点。我在互联网上搜索,我想我必须做另一个For-Loop,但我没有正确的语法。所以我只想编写一个Batch-Program,它从文件中读取服务器(ip list)并将正在运行的ping放入新的结果文件中。谢谢你的帮助。

set amount_of_pings=1
set file_name=server.txt
set result_file_name=result_server.txt

FOR /F "delims=:" %%i in (%file_name%) do (
FOR /F "delims=" %%a in (ping -n %amount_of_pings% %%i^| findstr "TTL") do (

   )
)

1 个答案:

答案 0 :(得分:0)

只测试find命令的结果,如果它没有引发错误级别,则ip存活并回显到报告文件。

如果ping中的TTL超时被视为正在运行的计算机,那么您的测试是正确的。如果没有,最好在TTL值的测试中包括等号。

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "amount_of_pings=1"
    set "file_name=server.txt"
    set "result_file_name=result_server.txt"

    break > "%result_file_name%"
    for /f "tokens=* usebackq" %%i in ("%file_name%") do (
        echo testing %%i
        ping -n %amount_of_pings% %%i | find "TTL=" >nul 2>nul && echo %%i >> "%result_file_name%"
    )