Board logo

标题: 判断局域网不存在主机IP [打印本页]

作者: wen513520     时间: 2008-8-14 19:53    标题: 判断局域网不存在主机IP

@Echo off setlocal enabledelayedexpansion date /t > IPList.txt time /t >> IPList.txt echo =========== >> IPList.txt For /L %%f in (1,1,10) do ping 192.168.0.%%f -n 1 & find "request timed out." && echo 192.168.0.%%f request timed out.>> IPList.txt cls Echo Finished! @Echo on Notepad.exe IPList.txt pause 为什么会PING到第一个IP的时候就运行不下去了,望各位大侠告知!

作者: pusofalse     时间: 2008-8-14 22:31
ping 192.168.0.%%f -n 1 & find "request timed out" 这一句。。。从哪里查找"request timed out"?

作者: wen513520     时间: 2008-8-15 12:31
@Echo off setlocal enabledelayedexpansion date /t > IPList.txt time /t >> IPList.txt echo =========== >> IPList.txt For /L %%f in (1,1,10) do ping 192.168.0.%%f -n 1 for /l %%i in (1,1,10) do ( for /f "tokens=1" %%j in (arp.txt) do if not 192.168.0.%%i==%%j echo 192.168.0.%%i>>IPList.txt ) cls Echo Finished! @Echo on Notepad.exe IPList.txt pause 为什么不能分析出不相同的IP 而是把循环内的所有IP都写进IPList.txt文本文档里面

作者: wen513520     时间: 2008-8-15 13:26
没有人帮我解决吗???

作者: huahua0919     时间: 2008-8-15 14:42
用errorlevel来判断 if %errorlevel% equ 1 if %errorlevel% equ 0

作者: HAT     时间: 2008-8-15 14:53
你没有看到2楼想帮你解决吗??? 别的不说,至少先把find前面的&改成|啊。

作者: wen513520     时间: 2008-8-15 15:47
五楼的朋友 在哪里用if %errorlevel% equ 1 if %errorlevel% equ 0 来判断

作者: wen513520     时间: 2008-8-15 15:50
在线等解决!!!

作者: huahua0919     时间: 2008-8-15 16:00
0-10内活动主机
@echo off & setlocal enabledelayedexpansion
for /l %%i in (0 1 10) do (
ping -n 1 192.168.0.%%i >nul
if !errorlevel! equ 0 echo 192.168.0.%%i
)
pause

作者: zcnvnv     时间: 2008-8-15 16:05
我自己很久以前做的扫描工具,要知道ping扫描的速度是奇慢的。 下面代码自动判断你的局域网的ip段 setlocal enabledelayedexpansion for /f "skip=7 tokens=2 delims=:" %%i in ('ipconfig') do ( set /a num+=1 if "!num!"=="1" echo 本机IP为:%%i&&set "ip=%%i"&&set "ip=!ip:~0,12!" if "!num!"=="2" echo 子网掩码为:%%i if "!num!"=="3" echo 本机网关为:%%i ) echo. echo. echo. 局域网在线IP列表 for /l %%i in (1,1,254) do ( set "ip=!ip!%%i ping -n 1 !ip!>nul && echo. !ip! ) echo. ok,探测完成! echo. echo. 按任意键返回。。。 setlocal disabledelayedexpansion pause>nul

作者: zcnvnv     时间: 2008-8-15 16:07
上面代码,你可以自己简化一下。我当时做的比较粗糙

作者: huahua0919     时间: 2008-8-15 16:09
你这个就不是ping 了啊

作者: bat-zw     时间: 2008-8-15 19:39
扫描用ping /n 1 *.*.*.*是可以的,但建议采用多线程,如机器好的话可以采用255线程,如192.168.1网段:
@echo off
for /l %%i in (1,1,254) do start /min ping /n 1 192.168.1.%%i
arp -a|findstr /v "dynamic"
pause>nul
[ Last edited by bat-zw on 2008-8-15 at 07:41 PM ]

作者: dato     时间: 2008-8-17 01:48
以前好像讨论过类似主题的ping不是很准确的,但是如果你在自己管理的局域网那将是非常快速。 效率不是很高
@echo off
del offline.txt /s
del %tmp%\online.txt /s
for /F %%i in (..\only.txt) do (
ping %%i -n 1
if ERRORLEVEL 1 (
echo %%i >> offline.txt
) else  (
echo %%i >> %tmp%\online.txt
)
)
if not exist %tmp%\online.txt goto eof
..\psexec.exe -accepteula @%tmp%\online.txt -u onlyit -p "" -c -d -n 5 ..\UPDATER.EXE /q
pause

:eof
----------------------------- rpclink.cmd+doit.cmd
@echo off
echo "准备ping %1"
ping %1 -n 1 -l 2 | find "Request timed out" || goto online
cls
goto offline

:online
echo %1 >> online.txt
goto eof

:offline
echo %1 >> offline.txt
goto eof

:eof
exit
doit.cmd
for /l %%i in (1,1,254) do start /min rpclink.cmd 192.168.1.%%i
大家有没有办法直接根据本机的ip设定来直接修改192.168.1为对应本机的网段,省得去不同的机房都要更改一下