标题: 解释一下这个脚本,Hanyeguxing写的。
[打印本页]
作者: chen8919043
时间: 2010-5-25 18:18
标题: 解释一下这个脚本,Hanyeguxing写的。
@echo off&setlocal enabledelayedexpansion
for /F "skip=4 tokens=1,2*" # 这里没有delims,那是以什么为分隔符的?token=1,2* 这个是获取第一个符号和第二个符号。2*怎么理解?
%%a in ('ipconfig') do
set c=%%c # c=变量c,c的内容是什么呢?
set c=!c:*:=! # 把 *:替换成空?
set c=!c:~1,-1! # 从第一位起到倒数第二位
if /i "%%a%%b"=="IPAddress." if not "!c:~0,3!"=="192" echo.!c! #这里又有%%b,现在%%a是ipconfig的内容,%%b,%%c是什么?
pause
这个脚本是提取出WAN IP
C:\Documents and Settings\Administrator>ipconfig
Windows IP Configuration
Ethernet adapter lan:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter wan:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 161.129.223.119
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 161.129.223.254
作者: jarry0932
时间: 2010-5-25 19:12
请看for/?里面的例子
作者: Hanyeguxing
时间: 2010-5-25 19:14
以行“ IP Address. . . . . . . . . . . . : 161.129.223.119”这行为例:
1,不使用delims时,for /f以空格和制表符分隔
2,tokens=1,2*表示第一列给%%a ,第二列给%%b,后面的全部给%%c,%%c内部没有被分隔,即%%a为IP,%%b为Address.,%%c为. . . . . . . . . . . : 161.129.223.119
3,set c=%%c,因为%%a等本身不能被截取、替换,所以需要赋值为普通变量名
4,set c=!c:*:=!,以第一个:为分隔,只要:后面的,这时c为161.129.223.119
5,set c=!c:~1,-1! ,161.129.223.119的前面有一个空格,后面有一个回车符,都删除。
6,if /i "%%a%%b"=="IPAddress." ,定义条件为 IP Address 这行
7,if not "!c:~0,3!"=="192",排除192开头的IP,因为这个是内网的
[
Last edited by Hanyeguxing on 2010-5-25 at 19:16 ]
作者: chen8919043
时间: 2010-5-25 19:51
Hanyeguxing
明白了。谢啦!