簡體   English   中英

使用批處理腳本解析txt文件中的文本行?

[英]Parsing lines of text in a txt file with a batch script?

因此,我目前正在處理掃描網絡的批處理文件。 我所做的是創建一個文本文件,該文件僅包含網絡上響應ping請求的每台計算機的IP,並將ping請求的輸出保存到名為IPAdresses.txt的文件中:====== ================================================== ===================

setlocal enabledelayedexpansion
@echo off

::文件重置和變量

echo. > %~dp0Logs\IPAddresses2.txt
SET fl=%~dp0Logs\IPAddresses.txt

:::此命令執行ping請求,並將答復僅保存到%〜dp0Logs \\ IPAddresses.txt。 ::每個返回的ping都將在文件中顯示一行,類似於“從192.168.1.1答復:字節= 32時間= 2ms TTL = 64”。

FOR /L %%i IN (1,1,254) DO ping -n 1 192.168.1.%%i | FIND /i “Reply” >> %fl%

:::此命令解析文件中的“來自192.168.1.1的答復:字節= 32時間= 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令牌(或字符串中的第三組字符)。 我需要擺脫“ 192.168.1.1:”中的“:”。 為了清楚起見,我想在IP地址的末尾刪除分號和以下空格。

:: i試圖將每一行都放入一個變量中並剪切尾部字符,但我無法使其正常工作。 ::或者有沒有辦法改變FOR命令來做到這一點?

我現在已經搜尋了兩天,並嘗試了各種解決方法,但是沒有運氣。 我只需要文本文件中的IP即可獲得進一步的功能以及網絡范圍的NET命令。

任何幫助,將不勝感激謝謝。

永遠不會太晚回答,是嗎? 這將帶您到那里。 可能有更清潔的方法來執行此操作,但是我嘗試盡可能地遵循您的代碼。

setlocal enabledelayedexpansion
@echo off
SET fl=%~dp0Logs\IPAddresses.txt
set net=10.2.10.
set start=71
set end=75

  FOR /L %%i IN (%start%,1,%end%) DO ping -n 1 %net%%%i | findstr /i Reply >> %fl%
  for /f "usebackq tokens=3" %%t in (`findstr /b /c:Reply from %fl% `) do (
  set ip=%%t
  set ip=!ip:~0,-1!
echo !ip!
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM