中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 判断局域网不存在主机IP 上一主题 | 下一主题
wen513520
初级用户





积分 122
发帖 44
注册 2007-8-30
状态 离线
『楼 主』:  判断局域网不存在主机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的时候就运行不下去了,望各位大侠告知!

2008-8-14 19:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 2 楼』:  

ping 192.168.0.%%f -n 1 & find "request timed out"

这一句。。。从哪里查找"request timed out"?



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-14 22:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wen513520
初级用户





积分 122
发帖 44
注册 2007-8-30
状态 离线
『第 3 楼』:  

@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文本文档里面

2008-8-15 12:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wen513520
初级用户





积分 122
发帖 44
注册 2007-8-30
状态 离线
『第 4 楼』:  

没有人帮我解决吗???

2008-8-15 13:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 5 楼』:  

用errorlevel来判断
if %errorlevel% equ 1
if %errorlevel% equ 0

2008-8-15 14:42
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

你没有看到2楼想帮你解决吗???
别的不说,至少先把find前面的&改成|啊。



2008-8-15 14:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wen513520
初级用户





积分 122
发帖 44
注册 2007-8-30
状态 离线
『第 7 楼』:  

五楼的朋友
在哪里用if %errorlevel% equ 1
if %errorlevel% equ 0
来判断

2008-8-15 15:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wen513520
初级用户





积分 122
发帖 44
注册 2007-8-30
状态 离线
『第 8 楼』:  

在线等解决!!!

2008-8-15 15:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 9 楼』:  

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


2008-8-15 16:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
zcnvnv
初级用户





积分 114
发帖 36
注册 2007-12-22
状态 离线
『第 10 楼』:  

我自己很久以前做的扫描工具,要知道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

2008-8-15 16:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zcnvnv
初级用户





积分 114
发帖 36
注册 2007-12-22
状态 离线
『第 11 楼』:  

上面代码,你可以自己简化一下。我当时做的比较粗糙

2008-8-15 16:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 12 楼』:  

你这个就不是ping 了啊

2008-8-15 16:09
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 13 楼』:  

扫描用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 ]



批处理之家新域名:www.bathome.net
2008-8-15 19:39
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 14 楼』:  

以前好像讨论过类似主题的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为对应本机的网段,省得去不同的机房都要更改一下



http://dato.ys168.com
google search bot
http://dato.minidns.net/
2008-8-17 01:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: