在很多情况下,我们都需要经常性的改动ip地址(例如笔记本电脑在两个地址经常性切换等)。
我简单尝试了一下,发现Windows下自动更换ip地址可以有两种方法(实质上是一种):
1.批处理文件法(bat文件)。
2.写个小的C程序,改动ip。
1.批处理文件法
这种方法是来自于cmd命令中的操作,由于可以用windows自带的netsh命令更改ip,
打开cmd命令提示符,输入以下命令:
netsh
interface
ip
set address 本地连接 static 10.0.1.10 255.255.255.0 10.0.1.1 1
每一个命令的具体用法都可以看帮助。
其中到了set address就可以设置ip地址,本例只是设置了静态ip地址,也可以利用命令设置ip为DHCP自动分配型的地址。
每一个cmd命令都可以转换成一个批处理文件,因此将以上步骤写成一个后缀为bat的批处理文件,具体内容为:
@echo off
echo 实验室按1键,寝室按2键:
set/p n=
if /i "%n%" equ "1" goto lab
if /i "%n%" equ "2" goto dorm
:lab
echo Setting...... lab
netsh interface ip set address name="本地连接" static 10.0.1.10 255.255.255.0 10.0.1.1 1
goto end
:dorm
echo Setting...... dorm
netsh interface ip set address name="本地连接" static 10.0.2.11 255.255.255.0 10.0.2.1 1
:end
echo ok
pause
ok,运行此批处理文件,输入1或2就可以设置两个不同的ip地址,当然也可以扩展到n个ip地址....
2.C程序
c程序也是来自于netsh命令的,c语言的stdlib.h库文件中提供了system函数可以直接调用windows系统命令。
因此,将以上bat文件改造成c程序,可以生成一个exe文件,看以下程序:
/******************************
***File name : IpChange
***File by : bobocheng
******************************/
#include <stdio.h>
#include <stdlib.h>
/*Declare function*/
char WaitInput(void);
void SetIp(char);
void main(void)
{
char input;
input = WaitInput();
SetIp(input);
printf("/n");
system("pause");
}
char WaitInput()
{
char i;
printf("input chioce: 1 for lab, 2 for dorm/n");
i = getchar();
return i;
}
void SetIp(char input)
{
if(input == '1')
{
printf("Please Wait, Setting....../n");
system("netsh interface ip set address 本地连接 static 10.0.1.10 255.255.255.0 10.0.1.1 1");
}
else if (input == '2')
{
printf("Please Wait, Setting....../n");
system("netsh interface ip set address 本地连接 static 10.0.2.10 255.255.255.0 10.0.2.1 1");
}
else
{
printf("Error input, End.");
/* WaitInput();*/
}
}
编译此程序,输入1或2同样可以实现ip的自动更改。
其实,还可以有许多其他方式,利用VC++编译一个Windows应用程序,或利用C#语言中WMI修改ip地址等....