这么多单向绑定的批处理,到底哪个有效???

来源:百度知道 编辑:UC知道 时间:2024/09/25 03:24:37
批处理一
@echo off
:::::::::读取本机Mac地址
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
:::::::::读取本机ip地址
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
:::::::::绑定本机IP地址和MAC地址
arp -s %IP% %Mac%
:::::::::读取网关地址
if exist GateIP.txt del GateIP.txt
find "Default Gateway" ipconfig.txt >GateIP.txt
for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G
ping %GateIP% -n 1
:::::::::读取网关Mac地址
if exist GateMac.txt del GateMac.txt
arp -a %GateIP% >GateMac.txt
for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H
:::::::::绑定网关Mac和IP<

第一个批处理 大致的意思就是 通过IPCONFIG/ALL查出你的 IP信息

然后写入一个TXT里,然后再到这个TXT里读取一些信息 ,使用

ARP -S 的办法来绑定。

其中::::::::::绑定本机IP地址和MAC地址
arp -s %IP% %Mac%
这一段,我认为是没有必要的,因为其代码的目的就是让自己的电脑能识别自己电脑的IP和MAC。因为你没有必要,也不会向自己的电脑发送ARP报文。

而接下来的那段代码也存在着问题,因为在IPCINFIG这个命令显示出的网关MAC也可能是某个网内程序伪造的。

相比之较下,第一个批处理效果不是很好。

第二个批处理很简单,有效果,但是不灵活。

如果在你知道自己真实网关MAC 地址的情况下 手动的

ARP -D ‘删除本机ARP 缓存表

ARP -S IP MAC ’绑定

这样是最有效的。
真实的网关MAC一般在 路由器里可以查到。 就是路由器里 LAN 口的MAC

第三个批处理 从原理上来讲 和第一个差不多

只是代码比第一个简化得多 。

@echo OFF
if %~n0==arp exit
if %~n0==Arp exit
if %~n0==ARP exit
这段的大致意思就是 如果你电脑没有联网就退出这个批处理。

而下面的内容,和第一个相比 就是 :

第一个是把IPCONFIG/ALL的信息 写入一个TXT 再让批处理在TXT里找。

第三个是直接 从IPCONFIG/ALL里 读取这些信息。

从步骤上来说节约了很多步骤,精简了代码。

但是其目的和做法都是差不多的。

具体做法还是要具体情况而定

第一个和第三个语法差不多,不过多出几个临时文件,当然最后它都删除了.