1

私は現在、ネットワークをスキャンするバッチファイルに取り組んでいます。私が行ったことは、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 トークン (または文字列の 3 番目の文字セット) しか取得しないためです。「192.168.1.1:」から「:」を取り除く必要があります。明確にするために、IP アドレスの末尾にあるセミコロンとそれに続くスペースを削除します。

::私はすべての行を変数に入れて末尾の文字をカットしようとしましたが、うまくいきません。::または、これを行うためにFORコマンドを変更する方法はありますか??

私は 2 日間検索してあらゆる種類の回避策を試しましたが、うまくいきませんでした。さらなる機能とネットワーク全体の NET コマンドのために、テキスト ファイル内の IP だけが必要です。

助けていただければ幸いです。ありがとうございます。

4

1 に答える 1