批量 Ping 用户定义的 IP 范围
Ping a user defined IP-Range with batch
我正在做一个学校项目,我想创建一个批处理文件来 ping 用户定义的 IP 范围并将成功的 ping 写入 txt 文件。
现在我卡在了 FOR
循环中:
@echo off
SET /p IPRange=Bitte IP-Range eingeben(xxx.xxx.xxx) :
SET /p AnfangsIP=Bitte AnfangsIP des Bereiches eingeben :
SET /p EndIP=Bitte EndIP des Bereiches eingeben :
FOR /L %IP% (%AnfangsIP%,1,%EndIP%) DO (
ping -n 1 %IP-Range%.%IP% | find "TTL=" >nul
if errorlevel 1 (
echo %IP-Range%.%IP% not reachable
) else (
echo %IP-Range%.%IP% reachable
)
)
pause>nul
批处理文件使用以下参数执行:IP 范围、起始 IP 地址、结束 IP 地址。我的目标是制作一个 for
循环,在每个循环中递增变量 %IP%
。从 start IP-address
到 end IP-address
.
我在论坛中进行了搜索,但只有一个 ping 并没有针对整个 IP 范围。
试试这个:
@echo off
SET /p IPRange=Bitte IP-Range eingeben(xxx.xxx.xxx) :
SET /p AnfangsIP=Bitte AnfangsIP des Bereiches eingeben :
SET /p EndIP=Bitte EndIP des Bereiches eingeben :
FOR /L %%I IN (%AnfangsIP%,1,%EndIP%) DO (
ping -n 1 %IPRange%.%%I | find "TTL=" >nul
if errorlevel 1 (
echo %IPRange%.%%I not reachable
) else (
echo %IPRange%.%%I reachable
)
)
pause>nul
编辑:添加了输出示例
C:\> test.bat
Bitte IP-Range eingeben(xxx.xxx.xxx) :127.0.0
Bitte AnfangsIP des Bereiches eingeben :0
Bitte EndIP des Bereiches eingeben :7
127.0.0.0 not reachable
127.0.0.1 reachable
127.0.0.2 reachable
127.0.0.3 reachable
127.0.0.4 reachable
127.0.0.5 reachable
127.0.0.6 reachable
127.0.0.7 reachable
伙计们
非常感谢您的回答。 Aacini 的剧本终于奏效了。我及时制作了一个没有任何 for 循环的脚本,它不是那么漂亮......
代码如下:
@ECHO off
COLOR F0
:START
BREAK>PINGLOG.txt
CLS
SET /P range=Bitte IP-Range eingeben(xxx.xxx.xxx):
CLS
SET /P sIP=Bitte Start-IP eingeben(xxx):
CLS
SET /P eIP=Bitte End-IP eingeben(xxx):
CLS
SET /P JN1=START PING FROM %range%.%sIP% - %range%.%eIP%?(Y/N):
CLS
SET /A counter=%sIP%
SET /A endIP=%eIP%
SET /A endIP+=1
CLS
IF /I %JN1%==Y (
GOTO PINGRANGE
) ELSE (
GOTO ENDE2
)
:PINGRANGE
COLOR 7C
PING -n 1 %range%.%counter% | find "TTL=" >nul
IF NOT ERRORLEVEL 1 (
ECHO ------------------------------------------------- >>PINGLOG.txt
ECHO %range%.%counter% is reachable! >>PINGLOG.txt
ECHO %range%.%counter% is reachable!
) ELSE (
ECHO %range%.%counter% is not reachable!
)
SET /A counter+=1
GOTO CHECK
)
:CHECK
IF %counter%==%endIP% (
GOTO ENDE1
) ELSE (
GOTO PINGRANGE
)
:ENDE1
COLOR F0
ECHO -------------------------------------------------
SET /P JN2= FINISH! WOULD YOU SEE THE LOGFILE?(Y/N):
IF /I %JN2%==Y (
START NOTEPAD "PINGLOG.txt"
) ELSE (
EXIT cmd.exe
)
:ENDE2
COLOR F0
ECHO -------------------------------------------------
SET /P JN3= NEW IP-RANGE PING?(Y/N):
IF /I %JN3%==Y (
GOTO START
) ELSE (
EXIT cmd.exe
)
我现在觉得这个不是很漂亮:)
祝你有愉快的一天
卢卡斯
我正在做一个学校项目,我想创建一个批处理文件来 ping 用户定义的 IP 范围并将成功的 ping 写入 txt 文件。
现在我卡在了 FOR
循环中:
@echo off
SET /p IPRange=Bitte IP-Range eingeben(xxx.xxx.xxx) :
SET /p AnfangsIP=Bitte AnfangsIP des Bereiches eingeben :
SET /p EndIP=Bitte EndIP des Bereiches eingeben :
FOR /L %IP% (%AnfangsIP%,1,%EndIP%) DO (
ping -n 1 %IP-Range%.%IP% | find "TTL=" >nul
if errorlevel 1 (
echo %IP-Range%.%IP% not reachable
) else (
echo %IP-Range%.%IP% reachable
)
)
pause>nul
批处理文件使用以下参数执行:IP 范围、起始 IP 地址、结束 IP 地址。我的目标是制作一个 for
循环,在每个循环中递增变量 %IP%
。从 start IP-address
到 end IP-address
.
我在论坛中进行了搜索,但只有一个 ping 并没有针对整个 IP 范围。
试试这个:
@echo off
SET /p IPRange=Bitte IP-Range eingeben(xxx.xxx.xxx) :
SET /p AnfangsIP=Bitte AnfangsIP des Bereiches eingeben :
SET /p EndIP=Bitte EndIP des Bereiches eingeben :
FOR /L %%I IN (%AnfangsIP%,1,%EndIP%) DO (
ping -n 1 %IPRange%.%%I | find "TTL=" >nul
if errorlevel 1 (
echo %IPRange%.%%I not reachable
) else (
echo %IPRange%.%%I reachable
)
)
pause>nul
编辑:添加了输出示例
C:\> test.bat
Bitte IP-Range eingeben(xxx.xxx.xxx) :127.0.0
Bitte AnfangsIP des Bereiches eingeben :0
Bitte EndIP des Bereiches eingeben :7
127.0.0.0 not reachable
127.0.0.1 reachable
127.0.0.2 reachable
127.0.0.3 reachable
127.0.0.4 reachable
127.0.0.5 reachable
127.0.0.6 reachable
127.0.0.7 reachable
伙计们
非常感谢您的回答。 Aacini 的剧本终于奏效了。我及时制作了一个没有任何 for 循环的脚本,它不是那么漂亮......
代码如下:
@ECHO off
COLOR F0
:START
BREAK>PINGLOG.txt
CLS
SET /P range=Bitte IP-Range eingeben(xxx.xxx.xxx):
CLS
SET /P sIP=Bitte Start-IP eingeben(xxx):
CLS
SET /P eIP=Bitte End-IP eingeben(xxx):
CLS
SET /P JN1=START PING FROM %range%.%sIP% - %range%.%eIP%?(Y/N):
CLS
SET /A counter=%sIP%
SET /A endIP=%eIP%
SET /A endIP+=1
CLS
IF /I %JN1%==Y (
GOTO PINGRANGE
) ELSE (
GOTO ENDE2
)
:PINGRANGE
COLOR 7C
PING -n 1 %range%.%counter% | find "TTL=" >nul
IF NOT ERRORLEVEL 1 (
ECHO ------------------------------------------------- >>PINGLOG.txt
ECHO %range%.%counter% is reachable! >>PINGLOG.txt
ECHO %range%.%counter% is reachable!
) ELSE (
ECHO %range%.%counter% is not reachable!
)
SET /A counter+=1
GOTO CHECK
)
:CHECK
IF %counter%==%endIP% (
GOTO ENDE1
) ELSE (
GOTO PINGRANGE
)
:ENDE1
COLOR F0
ECHO -------------------------------------------------
SET /P JN2= FINISH! WOULD YOU SEE THE LOGFILE?(Y/N):
IF /I %JN2%==Y (
START NOTEPAD "PINGLOG.txt"
) ELSE (
EXIT cmd.exe
)
:ENDE2
COLOR F0
ECHO -------------------------------------------------
SET /P JN3= NEW IP-RANGE PING?(Y/N):
IF /I %JN3%==Y (
GOTO START
) ELSE (
EXIT cmd.exe
)
我现在觉得这个不是很漂亮:)
祝你有愉快的一天 卢卡斯