Board logo

标题: [网络连接] [已解决]批处理怎样获取IP后自动固定? [打印本页]

作者: zjhuzi    时间: 2009-5-7 13:44     标题: [已解决]批处理怎样获取IP后自动固定?

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

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

作者: NeverOK    时间: 2009-5-7 13:58

@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 编辑 ]
作者: zjhuzi    时间: 2009-5-7 21:04     标题: 回 楼上 的 帖子 【执行结果如下】

下列命令没有找到: 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。

任务完成
请按任意键继续. . .
作者: NeverOK    时间: 2009-5-7 21:47     标题: 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
作者: zjhuzi    时间: 2009-5-7 21:49     标题: 回复 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。
任务完成
请按任意键继续. . .
作者: NeverOK    时间: 2009-5-7 21:57     标题: 你再试一下

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 编辑 ]
作者: zjhuzi    时间: 2009-5-7 22:00     标题: 回复 7楼 的帖子 , 测试结果

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

作者: zjhuzi    时间: 2009-5-7 22:05

NeverOK,差最后一步了~~
作者: NeverOK    时间: 2009-5-7 22:09     标题: 以下语句在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
作者: zjhuzi    时间: 2009-5-7 22:14     标题: 回复 10楼 的帖子[WINXP sp3 番茄花园v1.21 操作系统 测试]

255.255.255.255 不是 mask 的可接受的值。


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

任务完成
作者: zjhuzi    时间: 2009-5-7 22:19     标题: 回复 11楼 的帖子 【原因已查明,10楼代码正确】

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

[ 本帖最后由 zjhuzi 于 2009-5-7 22:23 编辑 ]
作者: NeverOK    时间: 2009-5-7 22:20

哈,我刚刚在虚拟机里也是遇到了类似的问题,做的好一点应该做个清除现有配置(刚刚测试的时候产生的配置)项的功能,你==
下面的内容你保存一下(可以自动获取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 编辑 ]
作者: zjhuzi    时间: 2009-5-7 22:25     标题: 回复 13楼 的帖子[测试结果]

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

确定。

任务完成
作者: NeverOK    时间: 2009-5-7 22:26

先用2嘛,清除一下现有配置
作者: zjhuzi    时间: 2009-5-7 22:28     标题: 回复 15楼 的帖子

是的,是按照先2后1的方法操作的.
原因可能如下:
Ethernet adapter Bluetooth 网络连接:

        Media State . . . . . . . . . . . : Media disconnected
        Description . . . . . . . . . . . : Bluetooth 设备(个人区域网) #3
        Physical Address. . . . . . . . . : 00-15-83-15-A3-10

我有使用蓝牙设备。
作者: zjhuzi    时间: 2009-5-7 22:29

你看能加一个命令
执行操作前
,禁用蓝牙网络
执行操作后
恢复蓝牙网络

不过这样的关系不太大
毕竟不是所有人都使用蓝牙网络的

如果能加上去,那就太好了.

[ 本帖最后由 zjhuzi 于 2009-5-7 22:31 编辑 ]
作者: NeverOK    时间: 2009-5-7 22:32

蓝牙,你的是IBM的本?我的也是,倒没注意,

意见很好,==
-------------------------------------------------
我看到你的蓝牙=#3了,你的ipconfig /all文本可以帖上来吗?

[ 本帖最后由 NeverOK 于 2009-5-7 22:34 编辑 ]
作者: zjhuzi    时间: 2009-5-7 22:41

[attach]1271[/attach]
作者: zjhuzi    时间: 2009-5-7 22:43

禁用网卡 "bluetooth 设备(个人区域网)#3" 即可解决问题.
作者: zjhuzi    时间: 2009-5-7 22:48

C:\Documents and Settings\Administrator>ipconfig /all

Windows IP Configuration

        Host Name . . . . . . . . . . . . : ae23ad2248f1412
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . :

Ethernet adapter 本地连接:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : Realtek RTL8168C(P)/8111C(P) PCI-E G
igabit Ethernet NIC
        Physical Address. . . . . . . . . : 00-E0-4D-AB-A9-36
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . :
        Subnet Mask . . . . . . . . . . . :
        Default Gateway . . . . . . . . . :
        DHCP Server . . . . . . . . . . . :
        DNS Servers . . . . . . . . . . . :
        Lease Obtained. . . . . . . . . . : 2009年5月7日 22:26:55
        Lease Expires . . . . . . . . . . : 2009年5月7日 23:26:55


Ethernet adapter Bluetooth 网络连接:

        Media State . . . . . . . . . . . : Media disconnected
        Description . . . . . . . . . . . : Bluetooth 设备(个人区域网) #3
        Physical Address. . . . . . . . . : 00-15-83-15-A3-10


注:ip地址已删除.希望不会影响结果.

[ 本帖最后由 zjhuzi 于 2009-5-7 22:54 编辑 ]
作者: zjhuzi    时间: 2009-5-7 22:55

需要使用DevCon工具辅助!?????

[ 本帖最后由 zjhuzi 于 2009-5-7 22:59 编辑 ]
作者: NeverOK    时间: 2009-5-7 23:04

不用,因为for的tokens搜索以空格区分列,bluetooth有3个空格,我对FOR还不是很熟悉,在摸索
作者: wcmcool    时间: 2009-5-8 13:18

如果不止一块网卡呢,如果本地连接不是本地连接呢,或者叫本地连接2,或者其它的呢
作者: Batcher    时间: 2009-5-8 14:40     标题: 回复 24楼 的帖子

本地连接的具体名称可以通过批处理来获取,多网卡的情况批处理也可胜任,具体问题具体分析。
作者: brqtpt007    时间: 2011-8-26 09:53

这个都可以自动获取为什么还要设成固定呢。
作者: lanni654321    时间: 2012-8-30 12:27

呵呵 这个真的很不错呢 坚决支持……




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2