批处理问题请教。解释for语句用法。高分求教

以下是我在网上下的批处理文件代码@echooffifexistipconfig.txtdelipconfig.txtipconfig/all>ipconfig.txtif... 以下是我在网上下的批处理文件代码

@echo off
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >phyaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M

if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I

arp -s %IP% %Mac%

del ipaddr.txt
del ipconfig.txt
del phyaddr.txt

exit

请高手解释下那个for语句怎么提取ipconfig.txt文件的IP地址和MAC地址的阿对for语句一直不怎么懂。
以下是ipconfig.txt

Windows IP Configuration

Host Name . . . . . . . . . . . . : WWW-364E31BCFDD

Primary Dns Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Hybrid

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Realtek RTL8169/8110 Family Gigabit Ethernet NIC - 数据包计划程序微型端口

Physical Address. . . . . . . . . : 00-1A-4D-35-C4-12

Dhcp Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.2.18

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 192.168.2.254

DNS Servers . . . . . . . . . . . : 202.102.24.35

221.6.4.66

不晓得怎么提取IP地址和MAC地址的。高手解释阿,都迷惑半天了
展开
 我来答
s903s
2007-12-05 · TA获得超过2180个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:0
展开全部
for /f ... in (phyaddr.txt) do ...
对文本文件phyaddr.txt中所有符合条件的内容进行处理。这里指定的条件为:
skip=2 文件中开始的前2行跳过。从第3行开始做
tokens=12 取第12个字符串(缺省的分割符是空格符)。

查看phyaddr.txt的第三行是这样的:
Physical Address. . . . . . . . . : 00-1A-4D-35-C4-12
tokens=1:"Physical"
tokens=2:"Address."
tokens=3:"."
tokens=4: "."
....
tokens=11: ":"
tokens=12: "00-1A-4D-35-C4-12"

所以,这里取到的%%M的值就是"00-1A-4D-35-C4-12"。执行do后面的命令:
set Mac=00-1A-4D-35-C4-12
这样,后面用到%Mac%时,就用00-1A-4D-35-C4-12代入了。

同理,for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
就是从IPAddr.txt第三行开始取每行第15个字符串。IPAddr.txt第三行是:
IP Address. . . . . . . . . . . . : 192.168.2.18
第15个字符串就是"192.168.2.18",执行do后面的命令:
set IP=192.168.2.18

这样,arp -s %IP% %Mac% 实际就是执行:
arp -s 192.168.2.18 00-1A-4D-35-C4-12

有关for的详细用法,可以在MS_DOS运行窗口键入for /?命令得到详细介绍。但注意写到BAT文件中的变量必须用两个百分号。for /?中所说的符号,就是这里说的字符串, 这样便于理解.
百度网友9cfc148
2007-12-05 · TA获得超过1263个赞
知道大有可为答主
回答量:1926
采纳率:100%
帮助的人:866万
展开全部
@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr "Physical"') do echo MAC:%%i
for /f "tokens=2 delims=:" %%j in ('ipconfig /all^|findstr /c:"IP Address"') do echo IP:%%j
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3b26de5
2007-12-05 · 超过41用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:0
展开全部
看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式