批处理问题请教。解释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地址的。高手解释阿,都迷惑半天了 展开
@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地址的。高手解释阿,都迷惑半天了 展开
展开全部
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 /?中所说的符号,就是这里说的字符串, 这样便于理解.
对文本文件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 /?中所说的符号,就是这里说的字符串, 这样便于理解.
展开全部
@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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询