[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] [已解决]批处理怎样获取IP后自动固定?

大家知道 ipconfig 可以查看本机IP地址,但是现在有一个问题,
能不能用一个批处理把自动获取的IP记录下来,然后设置成固定的IP
以后开机就不用自动搜索IP了。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

补充一点:还有DNS地址,也要可以自动填写哦
命令是
  1. ipconfig /all
复制代码

TOP

@echo off
:::读取本机Mac地址
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt

:::::::::读取本机ip地址
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
find "Subnet Mask" ipconfig.txt >MASKAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
for /f "skip=2 tokens=15" %%m in (MASKAddr.txt) do set MASKS=%%m

:::::::::读取网关地址
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

:::::::::读取DNS地址
if exist DNSServers.txt del DNSServers.txt
find "DNS Servers" ipconfig.txt >DNSServers.txt
for /f "skip=2 tokens=13" %%e in (DNSServers.txt) do set DNSIP=%%e

:::::::::设置本机IP地址
netsh interface ipv4 set address name="本地连接" source=static address=%IP% mask=%MASKS% gateway=%GateIP%
netsh interface ipv4 add dnsserver name="本地连接" address=%DNSIP% index=1

:::::::::清理文件
del /q ipconfig.txt
del /q IPAddr.txt
del /q MASKAddr.txt
del /q GateIP.txt
del /q DNSServers.txt
echo 任务完成

[ 本帖最后由 NeverOK 于 2009-5-7 14:06 编辑 ]
1

评分人数

TOP

回 楼上 的 帖子 【执行结果如下】

下列命令没有找到: interface ipv4 set address name=本地连接 source=static address
=10.117.62.150 mask=255.255.0.0 gateway=10.117.0.1。
下列命令没有找到: interface ipv4 add dnsserver name=本地连接 address=. index=1。

任务完成
请按任意键继续. . .

TOP

SORRY

netsh interface ipv4 set address name="本地连接" source=static address=%IP% mask=%MASKS% gateway=%GateIP%
netsh interface ipv4 add dnsserver name="本地连接" address=%DNSIP% index=1

我是在windows 2008里的,所以有这个命令.你的是XP或2000吧?

把NETSH语句改成:
netsh interface ip set address name="本地连接" source=static address=%IP% mask=%MASKS% gateway=%GateIP%
netsh interface ip add dnsserver name="本地连接" address=%DNSIP% index=1
1

评分人数

TOP

回复 5楼 的帖子【操作系统WINXP,执行效果如下】

'address' 不是这个指令的有效参数。
此命令提供的语法不正确。请查看帮助以获取正确的语法信息。

用法: 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

下列命令没有找到: interface ip add dnsserver name=本地连接 address=. index=1。
任务完成
请按任意键继续. . .

TOP

你再试一下

netsh interface ip set address name="本地连接" static  %IP% %MASKS% %GateIP% 1
netsh interface ip add dns name="本地连接" %DNSIP% index=1

有的系统可以接受上面的语法,有的能接受4楼语法

[ 本帖最后由 NeverOK 于 2009-5-7 21:59 编辑 ]
1

评分人数

TOP

回复 7楼 的帖子 , 测试结果

  1. 255.255.255.255 不是 mask 的可接受的值。
  2. . 不是 addr 的可接受的值。
  3. 任务完成
复制代码

TOP

NeverOK,差最后一步了~~

TOP

以下语句在windows xp \windows 2000\ windows 2003上测试通过

@echo off
:::读取本机Mac地址
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt

:::::::::读取本机ip地址
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
find "Subnet Mask" ipconfig.txt >MASKAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
for /f "skip=2 tokens=15" %%m in (MASKAddr.txt) do set MASKS=%%m


:::::::::读取网关地址
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


:::::::::读取DNS地址
if exist DNSServers.txt del DNSServers.txt
find "DNS Servers" ipconfig.txt >DNSServers.txt
for /f "skip=2 tokens=15" %%e in (DNSServers.txt) do set DNSIP=%%e

:::::::::设置本机IP地址
netsh interface ip set address name="本地连接" static %IP% %MASKS% %GateIP% 1
netsh int ip add dns name="本地连接" %DNSIP% index=1



:::::::::清理文件
del /q ipconfig.txt
del /q IPAddr.txt
del /q MASKAddr.txt
del /q GateIP.txt
del /q DNSServers.txt
echo 任务完成
pause
1

评分人数

TOP

回复 10楼 的帖子[WINXP sp3 番茄花园v1.21 操作系统 测试]

255.255.255.255 不是 mask 的可接受的值。


无法访问配置,因为另一配置工具正在访问它。
  关闭其他窗口,然后再试一次。

任务完成

TOP

回复 11楼 的帖子 【原因已查明,10楼代码正确】

O(∩_∩)O  thanks! NeverOK, I appreciate you! Thank you any way.

[ 本帖最后由 zjhuzi 于 2009-5-7 22:23 编辑 ]

TOP

哈,我刚刚在虚拟机里也是遇到了类似的问题,做的好一点应该做个清除现有配置(刚刚测试的时候产生的配置)项的功能,你==
下面的内容你保存一下(可以自动获取IP,也可以手动指定)


@echo off
:choice_A
echo                ┌────────┐
echo                │ [1] 手动指定ip │
echo                │ [2] 自动获取ip │
echo                │ 请选择...      │
echo                └────────┘
set /p choice_A=
if /i "%choice_A%"=="1" goto :choice_go1
if /i "%choice_A%"=="2" goto :choice_go2
goto choice_cc
netsh int ip set address name="本地连接" dhcp

:choice_go1
:::读取本机Mac地址
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt

:::::::::读取本机ip地址
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
find "Subnet Mask" ipconfig.txt >MASKAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
for /f "skip=2 tokens=15" %%m in (MASKAddr.txt) do set MASKS=%%m


:::::::::读取网关地址
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


:::::::::读取DNS地址
if exist DNSServers.txt del DNSServers.txt
find "DNS Servers" ipconfig.txt >DNSServers.txt
for /f "skip=2 tokens=15" %%e in (DNSServers.txt) do set DNSIP=%%e

:::::::::设置本机IP地址
netsh interface ip set address name="本地连接" static %IP% %MASKS% %GateIP% 1
netsh int ip add dns name="本地连接" %DNSIP% index=1



:::::::::清理文件
del /q ipconfig.txt
del /q IPAddr.txt
del /q MASKAddr.txt
del /q GateIP.txt
del /q DNSServers.txt
echo 任务完成
pause
goto :eof

:choice_go2
netsh int ip set address name="本地连接" dhcp
netsh int ip set DNS name="本地连接" dhcp
echo 任务完成
pause
goto :eof

:end

[ 本帖最后由 NeverOK 于 2009-5-7 22:22 编辑 ]

TOP

回复 13楼 的帖子[测试结果]

┌────────┐
               │ [1] 手动指定ip │
               │ [2] 自动获取ip │
               │ 请选择...      │
               └────────┘
1
255.255.255.255 不是 mask 的可接受的值。

确定。

任务完成

TOP

先用2嘛,清除一下现有配置

TOP

返回列表