原帖由 jasonwang 于 2006-10-20 09:21 发表
@echo off
for /f "tokens=3" %%i in ('ping www.sina.com.cn -n 1^|find /i ^"reply^"') do set IP=%%i
set IP=%IP::=%
echo %IP%
pause
能讲讲是什么意思吗?DOS学的好菜啊。
原帖由 老毛桃 于 2006-10-20 12:37 PM 发表
由于我们需要求得单纯的 IP,但是偏偏这里存在一个冒号“:”,得想办法将它去掉啊,下面的命令就是干这个的:
set IP=%IP:=%
这样的话,得到的变量 %IP% 的值就是去掉了冒号“:”的纯 IP 字符串了。但是由于冒号“:”是一个特殊的字符串,命令本身含有一个冒号“:”,我们用两个冒号“::”即可实现。
同样地,前面的查找 Reply 的语句中出现的引号“"”也是特殊字符,还有在它前面出现的管道符“|”也是特殊字符,我们需要按照微软的要求,在这些字符的前面加上一个控制符“^”。
原帖由 jasonwang 于 2006-10-20 13:39 发表
@echo off
for /f "tokens=3" %%i in ('ping www.sina.com.cn -n 1^|find /i "reply"') do set IP=%%i
echo %IP:~0,-1%
pause
%%i是不是相当于一个变量符号? find /i这个/i是什么意思 ...
原帖由 yfd11 于 2006-10-20 14:20 发表
C:\>ping www.sina.com.cn -n 1|find /i "reply"
Reply from 61.172.201.194: bytes=32 time=7ms TTL=244
能不能用/
ping www.sina.com.cn -n 1|find /i "Ping statistics for" >ip ...
原帖由 namejm 于 2006-10-20 12:49 发表
替换字符串中的某串字符的格式是 set str=!var1:%var2%=%var3%!,意思是,把%var1%中所有的%var2%替换成%var3%,并用str来接收,而冒号并非特殊字符,而是替换语句中的固定格式中含有冒号,而你要替换的是冒号,所以就得再写一个冒号,以至于看起来就像两个冒号连用了。
虽然管道符号是特殊符号,但是,用管道符号连接的语句并非都要用^来转义,比如,echo 1234|find "5">nul && echo yes||echo no语句中,就不必使用^,使用^反倒出错。但是在 ping 语句中却必须用转义符号,同样必须使用转义符号的还有dir,不清楚是为什么,还有待各位去发现。
欢迎光临 无忧启动论坛 (http://wuyou.net/) | Powered by Discuz! X3.3 |