所以我目前正在处理一个扫描网络的批处理文件。我所做的是创建一个文本文件,其中只有网络上响应 ping 请求的每台计算机的 IP,并且 ping 请求的输出保存到名为 IPAdresses.txt ::===== 的文件中==================================================== ====================
setlocal enabledelayedexpansion
@echo off
::文件重置和变量
echo. > %~dp0Logs\IPAddresses2.txt
SET fl=%~dp0Logs\IPAddresses.txt
::此命令执行 ping 请求并仅将回复保存到 %~dp0Logs\IPAddresses.txt。::每个返回的 ping 都会在文件中创建一行,如下所示“Reply from 192.168.1.1: bytes=32 time=2ms TTL=64”。
FOR /L %%i IN (1,1,254) DO ping -n 1 192.168.1.%%i | FIND /i “Reply” >> %fl%
::此命令解析文件中的“Reply from 192.168.1.1: bytes=32 time=2ms TTL=64”行并将输出保存到 %~dp0Logs\IPAddresses2.txt。
for /f "usebackq tokens=3" %%t in (`findstr /b /c:Reply from %fl% `) do (
echo %%t >> %~dp0Logs\IPAddresses2.txt
)
:: - - - - - -问题 - - - - - -
::问题是解析。最后一条命令只会解析“192.168.1.1:”,这是因为它只需要行中的 3 个 Token(或字符串中的第三组字符)。我需要从“192.168.1.1:”中删除“:”。为了清楚起见,我想删除 IP 地址末尾的分号和以下空格。
::我试图将每一行放入一个变量并剪切尾随字符,但我无法让它工作。::或者有没有办法改变 FOR 命令来做到这一点?
我已经搜索了两天并尝试了各种解决方法,但没有运气。我只需要文本文件中的 IP 即可获得更多功能和网络范围的 NET 命令。
任何帮助将不胜感激谢谢。