标题: 判断局域网不存在主机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为对应本机的网段,省得去不同的机房都要更改一下