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

[网络连接] 批处理怎样设置自动获取IP?

先占个沙发
这是楼主自己写的不?
我想请教个问题,不知道楼主是否熟悉netsh命令
在win7下以管理员身份运行下面的代码
  1. echo interface ipv4 set address "本地连接" dhcp| netsh
  2. echo dns set dns "本地连接" dhcp |netsh
复制代码
提示命令成功,但是ip设置并不会变成自动获取

使用netsh命令备份下自动获取ip时的设置
  1. netsh -c interface ipv4 dump > e:\ip备份.txt
复制代码
之后该ip为固定ip,再用以下命令恢复备份,失败
  1. netsh -f e:\ip备份.txt
复制代码
这个是怎么回事,问了好多地方,都没人解答,望楼主能帮忙
我是菜鸟,希望楼主说的简单些

下面是我写的批处理程序
  1. @echo off
  2. echo.
  3. echo -------------------------------------------------------------------------------
  4. echo   xp以上系统,请以管理员身份运行,未以管理员身份运行请退出重新以管理员身份运行
  5. echo -------------------------------------------------------------------------------
  6. echo 请选择 A,B,C,D,E:
  7. choice /n /c abcde /m "A为固定ip(学校设置),B为自动ip(一般设置),C 手动设置,D 备份当前地址ip,E 恢复备份的ip:"
  8. if errorlevel 5 goto bakup
  9. if errorlevel 4 goto bak
  10. if errorlevel 3 goto myset
  11. if errorlevel 2 goto dhcp
  12. if errorlevel 1 goto static
  13. :static
  14. pause
  15. echo interface ipv4 set address "本地连接" static 192.168.131.21 255.255.255.0 192.168.1.1| netsh
  16. echo dns set dns "本地连接" static 218.85.157.99 |netsh
  17. goto over
  18. :dhcp
  19. echo interface ipv4 set address "本地连接" dhcp| netsh
  20. echo dns set dns "本地连接" dhcp |netsh
  21. goto over
  22. :myset
  23. echo ------------------------
  24. set /p ip=请输入ip,按回车结束:
  25. echo %ip% >ip.txt
  26. for /f "delims=. tokens=1-4" %%a in (ip.txt) do set ip1=%%a& set ip2=%%b& set ip3=%%c
  27. del ip.txt
  28. if %ip1% lss 127 goto first & pause
  29. if %ip2% lss 192 ( goto second ) else ( goto third )
  30. :first
  31. echo interface ipv4 set address "本地连接" static %ip% 255.0.0.0 %ip1%.%ip2%.%ip3%.1 |netsh
  32. goto dns
  33. :second
  34. echo interface ipv4 set address "本地连接" static %ip% 255.255.0.0 %ip1%.%ip2%.%ip3%.1 |netsh
  35. goto dns
  36. :third
  37. echo interface ipv4 set address "本地连接" static %ip% 255.255.255.0 %ip1%.%ip2%.%ip3%.1 |netsh
  38. goto dns
  39. :dns
  40. echo dns set dns "本地连接" static 218.85.157.99 |netsh
  41. goto over
  42. :over
  43. cls
  44. echo.
  45. echo --------------------------------------------------
  46. echo.
  47. echo                  ip设置完成
  48. echo.
  49. echo --------------------------------------------------
  50. pause
  51. exit
  52. :bak
  53. echo -----------------------------------------------------------------------
  54. echo          备份当前的ip设置,将在e盘根目录下生成:ip备份.txt
  55. echo                  请保存好,勿随意移动备份文件
  56. echo -----------------------------------------------------------------------
  57. pause
  58. netsh -c interface ipv4 dump > e:\ip备份.txt
  59. echo.
  60. echo -----------------------------------------------------------------------
  61. echo                      备份完成,请保管好备份文件
  62. echo -----------------------------------------------------------------------
  63. start e:\
  64. pause
  65. exit
  66. :bakup
  67. echo -----------------------------------------------------------------------
  68. echo         请确认备份文件:ip备份.txt 和本程序放在同一目录下
  69. echo                 ************************************
  70. echo -----------------------------------------------------------------------
  71. pause
  72. echo.
  73. if not exist e:\ip备份.txt echo ip备份.txt 不存在!请将备份文件移至E盘根目录下 & start e:\ & pause
  74. netsh -f e:\ip备份.txt
  75. echo -----------------------------------------------------------------------
  76. echo                              ip已还原
  77. echo -----------------------------------------------------------------------
  78. pause
复制代码

echo interface ipv4 set address "本地连接" dhcp| netsh
echo dns set dns "本地连接" dhcp |netsh

提示命令成功,但是ip设置并不会变成自动获取


re:
上面的命令在我在都是正确的. 我XP(ipv4=ip)
尝试换种写法, 如下:
for windows 7:
  1. netsh interface ipv4 set address name="本地连接" source=dhcp
  2. netsh interface ipv4 set dns name="本地连接" source=dhcp register=PRIMARY
复制代码
使用netsh命令备份下自动获取ip时的设置
netsh -c interface ipv4 dump > e:\ip备份.txt
之后该(改)ip为固定ip,再用以下命令恢复备份,失败
netsh -f e:\ip备份.txt

上面的命令也同样是正确的.

问题:
1. netsh 命令需要后台服务支持
包括如下服务:
::winmgmt 显示名:  Windows Management Instrumentation (WMI) 依靠:RpcSs
::TapiSrv 显示名:  Telephony 依靠lugPlay RpcSs
::PlugPlay::显示名:  Plug and Play  
::rpcss   显示名:  Remote Procedure Call (RPC)
你可以运行netsh 命令 说明后台服务无问题
2.你提的两个问题在我这里都是可以通过的.
我无WIN7 ,但认为在WIN7上也是可以通过的.
3.既然都是正确的,当然别人不会回答你的问题.
4. 你换一种命令写法试试.
5.查看一下你的网络连接的名字是否是"本地连接",而不是"本地连接1""本地连接2"...
这里建议其名称写代码来获取.

[ 本帖最后由 hfg1977 于 2010-8-11 16:24 编辑 ]

TOP

看了半天头晕,就冲你的题目来看,ipconfig也可以的嘛:
  1. C:\>for /f "tokens=2* delims=:" %a in ('ipconfig ^|findstr "IP Address"') do echo %a
复制代码

TOP

回复 3楼 的帖子

楼主可能是想设置自动获取IP/手工制定IP
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表