欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Windows下用命令行修改IP地址的方法详解(附批处理文件)

程序员文章站 2022-07-06 13:01:16
由于我所处的地方要经常在不同的网络之间切换,比如局域网、系统内部网和外网(光是外网我要常常在3个adsl网之间切换)。我之前一直用的方法是在本机上设置多个不同网段的ip,然...
由于我所处的地方要经常在不同的网络之间切换,比如局域网、系统内部网和外网(光是外网我要常常在3个adsl网之间切换)。我之前一直用的方法是在本机上设置多个不同网段的ip,然后切换路由(route),这样不同的网段通过不同的网关出去,就可以达到同时访问多个网络的目的。但是这样我发现经常可能出现一些问题,所以我决定用最原始的方法来解决,那就是在要使用某一个网段的时候就只用这个网段的ip,这样就需要不停的更换ip地址。当然,在windows的“网络连接”属性中这样的更改是很麻烦的,不过还好的是,windows的“netsh”命令提供了命令行下更改ip的功能,利用这一点,可以将它做成bat的批处理文件,就方便多了。

以下就是具体的方法和命令详解:

首先进入命令提示行:“win+r”>“cmd”,回车
输入netsh,回车,出现:netsh>
再输入interface,回车,出现netsh interface>
再输入ip,回车,出现netsh interface ip>

进入ip设置项了,我们要用到以下的命令:
set address - 添加一个 ip 地址到指定的接口。

先看看关于此令的windows帮助:
--------------------------------------------------------------------------
用法: set address [name=]<string>
[[source=]dhcp |
[source=] static [addr=]ip address [mask=]ip subnet mask]
[[gateway=]<ip address>|none [gwmetric=]integer]

参数:

标记 值
name - 接口名称。
source - 下列值之一:
dhcp: 对于指定接口,设置用 dhcp 配置 ip
地址。
static: 设置使用本地静态配置设置 ip
地址。

gateway - 下列值之一:
<ip address>: 您设置的 ip 地址的指定默认
网关。
none: 不设置默认网关。
gwmetric - 默认网关的跃点数。如果网关设置为 'none',则
不应设置此字段。
只有在 'source' 为 'static' 时才设置下列选项:

addr - 指定接口的 ip 地址。
mask - 指定 ip 地址的子网掩码。

注释 : 用来将 ip 地址配置模式从 dhcp 模式改为 static,或从 static
模式改为 dhcp。用静态 ip 地址在接口上添加 ip 地址,或添加
默认网关。
示例 :

set address name="local area connection" source=dhcp
set address local static 10.0.0.9 255.0.0.0 10.0.0.1 1
----------------------------------------------------------------------------

了解了用法之后,我们就可以进行设置了:
在netsh interface ip>之后输入
set address "本地连接" static 192.168.4.23 255.255.255.192 192.168.4.1 1
然后回车,稍候会显示“确定”,ip设置完毕。
这里解释一下,“本地连接”是指windows“网络属性”中看到的连接的名称,static表示要指定静态ip而非dhcp指派,后面三个分别是ip,子网掩码,网关,最后的“1”是指默认网关的跃点数,一般为“1”。

至此,命令行下设置ip完成。
同时你还可以在命令行下更改dns设置,用的是set dns命令,你可以输入set dns /?查看使用方法。

最后,我们将这些命令保存为一个bat文件(setip192168423.bat):
复制代码 代码如下:

@echo off
rem eth //eth 为网卡名称,可在网络连接中查询,如"本地链接"
set eth="本地链接"
rem ip //ip 为你想更改的ip
set ip=192.168.4.23
rem gw //gw 为网关地址
set gw=192.168.4.1
rem netmasks //netmasks 为子网掩码
set netmasks=255.255.255.192

echo 正在将本机ip更改到: %ip%
rem
if %gw%==none netsh interface ip set address %eth% static %ip% %netmasks% %gw% > nul
if not %gw%==none netsh interface ip set address %eth% static %ip% %netmasks% %gw% 1 > nul
echo.........................
echo 检查当前本机ip:
ipconfig
echo.........................
echo 成功将本机ip更改为%ip%!
pause
close