58

Windowsのコマンドラインですべてのネットワークアドレスを(pingなどを使用して)チェックして、どのアドレスが取得されているか、アクティブなデバイスがあるかを確認することは可能ですか:

すなわち。次のようなことをするもの:

for i = 0 to 255
    ping 192.168.1.i //Print this
end

これは明らかに疑似コードです。Windows cmdでこのようなことができるかどうか疑問に思っています。バッチ ファイルが必要ない場合は素晴らしいことですが、これが不可能かどうかは理解しています。

PS。また、これを行うプログラムがあれば言及してください。ただし、cmd で行うとよいでしょう。

4

11 に答える 11

119

コマンドプロンプトを開き、次のように入力します。

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt

自分のネットワークに一致するように192.168.10を変更します。

-n 1を使用すると、通常の4パケットではなく、各コンピューターに1パケットだけを送信するように要求されます。

上記のコマンドは、192.168.10.0ネットワーク上のすべてのIPアドレスにpingを実行し、C:\ドライブにipaddresses.txtというテキストドキュメントを作成します。このテキストドキュメントには、ping要求に応答したIPアドレスのみが含まれている必要があります。

完了するまでにかなり時間がかかりますが、pingコマンドに-aを追加するだけで、IPアドレスをホスト名に解決することもできます。

FOR /L %i IN (1,1,254) DO ping -a -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt

これはここからです

お役に立てれば

于 2012-12-04T22:50:03.533 に答える
18

速度の点で最高のユーティリティはNmapです。

@コマンドプロンプトを書く:

Nmap -sn -oG ip.txt 192.168.1.1-255

これは、指定された範囲内のすべての IP アドレスに ping を実行し、単純なテキスト ファイルに保存します。

Nmap を使用して255のホストをスキャンするには、わずか2秒しかかかりません。

于 2013-09-30T13:49:02.183 に答える
5

この投稿でも同じ質問をしていますが、Linux の場合は参考になるかもしれません。 サブネット上の各 IP に ping を送信する

nmap は、ホスト OS の識別に役立ち、高速であるため、おそらく使用するのに最適なツールです。nmap.org サイトの Windows プラットフォームで利用できます。

于 2012-12-04T22:54:20.567 に答える
2

あなたがしたいのは、コンピュータがネットワークに接続されているかどうかを確認し、それらのIPアドレスを収集することだけです。angryIPスキャナー(http://angryip.org/)を利用して、特定のサブネットまたはサブネットのグループで使用されているIPアドレスを確認できます。

DHCP内にないIPが使用されているかどうかを確認するときに、このツールが非常に役立つことがわかりました。

于 2012-12-04T22:48:38.893 に答える
1

Windows 8 のバッチ スクリプトで変更されたように見えるものもあり、DGG による上記の解決策により、コマンド プロンプトがクラッシュするようになりました。

次の解決策は私のために働いた:

@echo off
set /a n=0
:repeat
set /a n+=1
echo 192.168.1.%n%
ping -n 1 -w 500 192.168.1.%n% | FIND /i "Reply">>ipaddresses.txt
if %n% lss 254 goto repeat
type ipaddresses.txt
于 2013-09-11T19:05:08.580 に答える
0
@ECHO OFF

IF "%SUBNET%"=="" SET SUBNET=10

:ARGUMENTS
ECHO SUBNET=%SUBNET%
ECHO ARGUMENT %1 
IF "%1"=="SUM" GOTO SUM
IF "%1"=="SLOW" GOTO SLOW
IF "%1"=="ARP" GOTO ARP
IF "%1"=="FAST" GOTO FAST

REM PRINT ARP TABLE BY DEFAULT
:DEFAULT
ARP -a
GOTO END

REM METHOD 1 ADDRESS AT A TIME
:SLOW
ECHO START SCAN
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO ping -a -n 2 192.168.%SUBNET%.%%i | FIND /i "TTL="  >> ipaddresses.txt
GOTO END

REM METHOD 2 MULTITASKING ALL ADDRESS AT SAME TIME
:FAST
ECHO START FAST SCANNING 192.168.%SUBNET%.X
set /a n=0
:FASTLOOP
set /a n+=1
ECHO 192.168.%SUBNET%.%n%
START CMD.exe /c call ipaddress.bat 192.168.%SUBNET%.%n% 
IF %n% lss 254 GOTO FASTLOOP
GOTO END

:SUM
ECHO START SUM
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO TYPE ip192.168.%SUBNET%.%%i.txt | FIND /i "TTL=" >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO DEL ip192.168.%SUBNET%.%%i.txt
type ipaddresses.txt
GOTO END

:ARP
ARP -a >> ipaddresses.txt
type ipaddresses.txt
GOTO END


:END
ECHO DONE WITH IP SCANNING
ECHO OPTION "%0 SLOW" FOR SCANNING 1 AT A TIME
ECHO OPTION "%0 SUM" FOR COMBINE ALL TO FILE
ECHO OPTION "%0 ARP" FOR ADD ARP - IP LIST
ECHO PARAMETER "SET SUBNET=X" FOR SUBNET
ECHO.
于 2013-11-08T16:33:42.853 に答える
-2
for /l %%a in (254, -1, 1) do ( 
    for /l %%b in (1, 1, 254) do (
        for %%c in (20, 168) do (
            for %%e in (172, 192) do (
                ping /n 1 %%e.%%c.%%b.%%a>>ping.txt
            )
        )
    )
)
pause>nul
于 2014-12-02T17:29:27.213 に答える