原文:做一个自动修改本机IP和mac的bat文件

1、ip bat修改理论探讨

前两天我突然萌生了一个念头:能不能做一个小程序来实现自动配置或修改IP和mac,达到一键搞定的目的,这样尤其适合那些带着笔记本到处跑的商务人员,于是我首先想到了bat处理。

查阅资料后发现修改iP有现成的命令,但是修改mac相对麻烦一些,需要智能地修改注册表。

修改ip命令如下:

netsh interface ip set address name="本地连接" source=static addr=202.200.155.129 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=202.200.155.254 gwmetric=1
netsh interface ip set dns name="本地连接" source=static addr=202.200.144.2 register=PRIMARY
netsh interface ip add dns name="本地连接" addr=61.163.1.4 index=2
netsh interface ip set wins name="本地连接" source=static addr=none

将以上代码相关ip配置修改为你自己的配置,保存到记事本文件,后缀名改为bat,运行即可。

注意:本地连接”必须与你的本地连接名称相同,gwmetric=1必须有,否则有语法错误。

自动获取IP命令如下:

netsh interface ip set address name="本地连接" source=dhcp
netsh interface ip set dns name="本地连接" source=dhcp

同样保存为bat文件,即可运行设置。

然而,以上方法还不够完美,当不同用户使用这段代码时,用户需要亲自修改这些代码来配置自己的IP,所以我们考虑:能不能把IP的相关配置保存的一个文件里边,然后由bat代码解释执行呢?这样的话,用户只需要修改ip配置文件,bat程序文件便可自动解释执行。答案是肯定的,我们可以这样实现:

运行windows cmd命令,输入下命令即可将你现在的IP配置保存到文件里边:

netsh -c interface dump > c:/myipconfig/ip1.txt

改命令自动将你现有的ip配置保存到 c:/myipconfig/ip1.txt,此时你可以打开查看其。注意:‘>’为输入文件符号

然后,我们可以通过命令:netsh -f c:/myipconfig/ip1.txt 将ip1.txt保存的ip配置设置到本机。

2、mac bat 修改理论探讨

到目前为止,有很多人坚信mac地址不可能被修改,他们认为mac是全球唯一的地址,修改了岂不是乱套了吗?而且硬件厂商也不容许你修改的,这里我要做出解释:在windows平台上,所谓的mac地址在通信时某台机子的mac地址是多少是由windows说了算的,windows在通信时是在在注册表里边查找本机的mac地址的。所以我们所谓的修改mac地址也只是在注册表中修改,没有对网卡进行实际的修改,当你将mac设置为disable的时候,mac就自动回到了网卡的mac了。顺便说一句,我们为什么要修改mac呢?是因为有些上网账号和mac绑定到了一起,在该账号下只认初始化的那个mac。另外,再说一个奇怪的现象,在同一个集线器/交换机下,将所有机器IP地址,mac修改成一样,照样可以上网,我不清楚这是windows的一个bug,还是它的一个功能。

言归正传,我们如何做bat能够在注册表中修改mac呢?通过网上查阅资料其理论方法如下:

Windows2000/XP 的修改
 1)在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0000 、 0001 、 0002 等主键下,查找 DriverDesc ,内容为你要修改的网卡的描述,如“ Realtek RTL8029(AS)-based PCI Ethernet Adapter ”。
 2)如果在0001下找到了1中的DriverDesc ,在其下,添加一个字符串,命名为 NetworkAddress ,其值设为你要的 MAC 地址(注意地址还是连续写)。如: 00E0DDE0E0E0 。
 3)然后到其下 Ndi/params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值是你要设的 MAC 地址,要连续写,如: 000000000000 。(实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的 MAC 地址还是取决于在第 2 点中提到的 NetworkAddress 参数,这个参数一旦设置后,以后高级属性中的值就是 NetworkAddress 给出的值而非 default 给出的了。)
 4)在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串,其作用为指定 NetworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“不存在”选项。
 5)重新启动你的计算机,打开网络邻居的属性,双击相应网卡项会发现有一个 Network Address 的高级设置项,可以用来直接修改 MAC 地址或恢复原来的地址(选中不存在)。

根据这个方法,我们可以做一个.reg文件或者.bat文件来操作注册表,但是这样相对麻烦一些。这里我们使用第三方软件smac 1.0,注意:只能用1.0,其他高级版本不支持命令行参数,也就不能做bat文件了。

将smac.exe下载下来,copy到你的某个目录如:c:/myipconfig

然后我们利用命令 smac -ModifyMAC 0 000D45748512   其中0代表第0张网卡

3、一键修改IP及mac bat实现

根据以上理论,我们便可实现了

1)利用命令netsh -c interface dump > c:/myipconfig/ip1.txt将ip配置格式文件保存到ip1.txt中,打开ip1.txt修改相关配置信息为你的目标配置信息。

2)手动将目标mac信息保存到mac.txt中

3) 在本目录下新建记事本保存如下命令到bat中即可:

@echo off
         echo 实验室IP配置
         echo fanston(fzd)制作,减轻你在实验室到宿舍频繁修改ip苦恼
         echo 提示:请确保您的网卡名称为"本地连接"
         pause

echo 正在设置ip dns ...
         netsh -f ip1.txt
         echo IP dns设置完毕!

echo 正在设置mac
         for /f "delims=" %%i in ('find "0" "mac.txt"')do set gmac=%%i
         smac -ModifyMAC 0 %gmac%
         echo mac设置完毕!

echo 配置完毕!
         echo 有时需要禁用,并启用一下本地连接才可生效(一般情况不需要)
         pause

当ip发生变化时,用户直接从ip1.txt和mac.txt 中配置相关信息即可,实现了代码无关性。

所有工具及代码全部在我分享的资源中,有兴趣的朋友可以下载试用!

做一个自动修改本机IP和mac的bat文件的更多相关文章

  1. [批处理]自动修改本机IP地址

    前言 抱着笔记本经常到处跑的人,今天回宿舍上网,明天去机房上网,后面去办公室上网,每到一个地方,都要更换一次IP网关掩码 如果都是DHCP还好,关键是为了组织为了方便管理这些地方都是使用的静态IP,所 ...

  2. 【网络编程/C++】修改本机ip地址

    昨天学会了编程实现获取本地网卡信息,今天再接再砺学会了修改本机ip地址.其实原理很简单就是用c++调用一下dos命令而已,不得不说,dos命令实在是太强大了,当然听说还有种修改注册表的方法,不过没有试 ...

  3. Linux 获取本机IP、MAC地址用法大全

    getifaddrs()和struct ifaddrs的使用,获取本机IP ifaddrs结构体定义如下: struct ifaddrs { struct ifaddrs *ifa_next; /* ...

  4. 获取本机IP、mac地址、计算机名

    python获取本机IP.mac地址.计算机名 在python中获取ip地址和在php中有很大不同,我们先来看一下python 获得本机MAC地址: >>> import uuid ...

  5. Micropython 如何用Turnipbit做一个自动浇水装置

    最近在研究Turnipbit这块板子,打算是连接一个摄像头模块,正在实验练习中,(祝自己早日弄好)上篇文章我们讲了用Turnipbit连接LCD5110显示英文词句,前几天给家里花浇水的时候发现花招了 ...

  6. windows下用C++修改本机IP地址

    两种方法 第一种.使用DOS命令(即时生效) 第二种.修改注册表(重启生效) 1.打开SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards ...

  7. 做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk

    前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! ...

  8. python获取本机IP、mac地址、计算机名

    在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 我们先来看一下python 获得本机MAC地址: 1 2 3 4 import uuid de ...

  9. JAVA获取本机IP和Mac地址

       在项目中,时常需要获取本机的Ip或是Mac地址,进行身份和权限验证,本文就是通过java代码获取ip和Mac. package com.svse.query;import java.net.In ...

随机推荐

  1. _tcscat在Debug和Release根据问题

    背景: 因此,例如,在下面的代码段,作用是得到的路径当前程序(C:\work\A.exe),然后"A.exe"拆除,组装的"C:\work\inject.dll" ...

  2. hive字符串函数

    1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...

  3. IE8,IE9,IE10,FireFox 的CSS HACK

    #employeesView { top: 732px; //所有浏览器 top: 730px\9;//所有IE浏览器 } @media all and (min-width:0) { #employ ...

  4. 深入理解Tomcat系列之二:源码调试环境搭建(转)

    前言 最近对Tomcat的源码比较感兴趣,于是折腾了一番.要调试源码首先需要搭建环境,由于参考了几篇帖子发现都不怎么靠谱,最后还是折腾出来了,然而却花了足足一天的时间去搭建这个环境.发现都不是帖子的问 ...

  5. Redis 安装与简单示例(转)

    本文转载自:http://www.cnblogs.com/kissdodog/p/3570984.html Redis的安装 Redis下载地址如下:https://github.com/dmajki ...

  6. Linux下SVN安装配置全程实录(转)

    一.安装SVN默认安装到/usr/local/bin下面 二.创建仓库 svnadmin create /home/svnrepo /root/svnrepo为所创建仓库的路径,理论上可以是任何目录 ...

  7. httl开源JAVA模板引擎,动态HTML页面输出

    HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...

  8. HDU 2829 Lawrence(动态规划-四边形不等式)

    Lawrence Problem Description T. E. Lawrence was a controversial figure during World War I. He was a ...

  9. FragmentCustomAnimation实现Fragment的界面切换

    1.知识点:FragmentCustomAnimation 2.演示样例:来自于官网演示样例的简化,这样更方便于学习该知识点. 本演示样例的源代码下载地址为:http://download.csdn. ...

  10. 使用SVNkit删除版本库的文件

    源网址:http://wiki.svnkit.com/Committing_To_A_Repository Editing Operation: commiting to a repository T ...