中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-07 11:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 技术探讨:编写批处理程序来ping一定ip段内存活主机 查看 7,562 回复 20
16 发表于 2006-12-29 00:03 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
多谢lxmxn鼓励~:)


回PPdos兄:

%~s0    就是批处理自己的名字。更详细内容见 For /? 帮助的最后一部分帮助内容:)

Start %~s0 用Start运行批处理文件自身(相当于又运行了一个“自己”,与当前正在运行的自身无关)。
      
%1     参数,批处理运行时所带入的参数。
       如果 Copy a.txt d:\ 的命令执行时,则Copy命令后面加的参数: a.txt 就相当于 %1 , d:\就相当于%2



关于 && 与 || 等操作在下面的贴子非常全面的列表~:)

DOS 符号的问题 (详见第4楼)

http://www.cn-dos.net/forum/viewthread.php?tid=24289&fpage=1




关于%1应用在判断/开关等更复杂的操作以及参数次序的问题,下面贴子很精彩~:)

批处理参数问题一点谈
http://www.cn-dos.net/forum/viewthread.php?tid=17785




其它的内容可能有与之相关的,在下面的一个索引贴子里~:)

[简单索引]SET变量、延时变量、各种符号的用法

http://www.cn-dos.net/forum/viewthread.php?tid=24549&fpage=1&highlight=%E7%AE%80%E5%8D%95

[ Last edited by redtek on 2006-12-28 at 11:05 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
17 发表于 2006-12-29 00:05 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
Originally posted by PPdos at 2006-12-28 10:26:
Redtek兄所写精短之作着实让我研究好几天 而又无果 才知批处理之深邃....

希望能得各位指点,疑惑有三:

1.变量 %1在此是何意义

2.虽知start不支持頮..


  都是基础啊……
  
  1、%1 代表运行某程序的第一个参数。

  2、start 不是不支持长文件名,而是运行带有空格路径的程序一般会出错,加上%~s0,得到的是程序的短路径,这样,就不会在路径中出现 空格或者其它特殊的符号以致于start命令的运行失败。

  3、&& 的作用是前面的命令运行成功之后才执行后面的命令,所以当ping成功了才写内容到文件中,基本上是可以判断存活主机的。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +5 2006-12-29 00:07
18 发表于 2006-12-29 00:06 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  啊,我又慢了兄一步了,呵呵,看来要努力了~
19 发表于 2008-12-03 01:04 ·  中国 福建 厦门 电信
新手上路
积分 19
发帖 15
注册 2008-03-31 01:01
18年会员
UID 114501
性别 男
状态 离线
Originally posted by redtek at 2006-12-27 02:41 AM:
这个好玩~:)
再来一个254线程扫描的,嘿嘿~:)

(用 Start 模拟 254线程,扫描 1-254 台主机约为 20 秒)


(运行前注意: 运行后同 ...

第一句 if == (Goto:Start) else (Goto:Ping)
符号"”的作用是???
20 发表于 2008-12-03 01:05 ·  中国 福建 厦门 电信
新手上路
积分 19
发帖 15
注册 2008-03-31 01:01
18年会员
UID 114501
性别 男
状态 离线
Originally posted by redtek at 2006-12-27 02:41 AM:
这个好玩~:)
再来一个254线程扫描的,嘿嘿~:)

(用 Start 模拟 254线程,扫描 1-254 台主机约为 20 秒)


(运行前注意: 运行后同 ...

第一句 if == (Goto:Start) else (Goto:Ping)中
符号"”的作用是???

[ Last edited by 007dna1 on 2008-12-3 at 01:06 ]
21 发表于 2008-12-03 01:16 ·  中国 福建 厦门 电信
新手上路
积分 19
发帖 15
注册 2008-03-31 01:01
18年会员
UID 114501
性别 男
状态 离线
Originally posted by PPdos at 2006-12-27 03:37 AM:
但如果扫描几万个端口 同时打开几万个窗口好象要自杀?能不能进行对打开start telnet窗口的数量限制呢?虽然连接大约5秒钟后失败退出 但是打开的速度要快吧...

加上红色的那部分代码。。。用ping命令在每打开10个窗口的时候延时一下。。。应该就可以了
@echo off

if == (Goto :Start) else (Goto :Ping)

:Start
setlocal EnableDelayedexpansion
set a=0

echo.ScanTime:%time%>ip.txt&&set "ip=61.149.20"
for /L %%i in (1,1,254) do (Start %~s0 %ip%.%%i&set /a a=%%i%%10&if !a!==0 ping -n 2 127.0.0.1>nul)
endlocal

Goto :eof

:Ping
ping %1 -n 1 -w 1 >nul&&echo %1 - OK!>>ip.txt
exit

[ Last edited by 007dna1 on 2008-12-3 at 01:19 ]
论坛跳转: