我有一个完整的服务器列表,我想检查哪些服务器正在运行,哪些服务器处于脱机状态。所以我想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 (
)
)
答案 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%"
)