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

[网络连接] 批处理怎样自动修改IP和DNS?

  1. ::问题一:提取"默认网关"和DNS1 DNS2 时有的系统版本 DNS2 提取不正常,得到的是dns2=Primary.WINS.Server . . . . . . . : 192.168.74.2  (正常的是:DNS2=192.168.74.2) 请问能否解决???
  2. ::问题二:本批处理当次可以正常设置,第二次运行批处理后会变为IP和DNS都是自动获取的(好像秕处理不起作用一样),第三次又正常,第四次不正常.....一直循环.....请问是什么原因???如何解决???先谢谢各位大侠。。。。
  3. @echo off
  4. ::提取"本地连接"名称
  5. for /f "tokens=3,4 delims==: " %%i in ('ipconfig ^|findstr /r "本"') do set b=%%i %%j
  6. echo %b% > bd.txt
  7. for /f %%a in (bd.txt) do set bd=%%a
  8. set bdl="%bd%"
  9. del bd.txt
  10. ::将IP和DNS改为自动获取
  11. netsh interface ip set address name=%bdl% source=dhcp >nul
  12. netsh interface ip set dns name=%bdl% source=dhcp >nul
  13. ::提取"默认网关"和DNS1  DNS2
  14. for /F "tokens=1,2* delims=:. " %%a in ('ipconfig/all') do (
  15. if defined dns1 set dns2=%%a.%%b.%%c&set d&goto ip
  16. if /i "%%a %%b"=="DNS Servers" (set "dns1=%%c")else set "dhcp=%%c")
  17. :ip
  18. ::为使用在同一网段
  19. echo %dhcp% > dhcp.txt
  20. for /f "delims=. tokens=1,2,3" %%a in (dhcp.txt) do set dip=%%a.%%b.%%c
  21. del dhcp.txt
  22. ::防止IP冲突而自动设置IP
  23. for /l %%i in (2,1,255) do (ping -n 1 %dip%.%%i |find "Reply" >nul 2>nul && echo %dip%.%%i
  24. 已被使用 || set ip=%dip%.%%i && goto pip )
  25. 设置IP及DNS1  DNS2
  26. :pip
  27. set MASK="255.255.255.0"
  28. set GM=1
  29. netsh interface ip set address name=%bdl% source=static addr=%IP% mask=%MASK% gateway=%
  30. dhcp% gwmetric=%GM%   
  31. netsh interface ip set dns name=%bdl% source=static addr=%dns1%
  32. netsh interface ip set wins name=%bdl% source=static addr=%dns2%
复制代码

1# jkyyjyn001


获取DNS的时候,用冒号作为分隔符能否解决问题?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

2# Batcher
先谢谢BATCHER大哥的关注。。。。
在获取IP和DNS时本来就是 ":. "就是冒号+点+空格。。
可是有的版本系统IPCONFIG/ALL出来的是:
DNS Server.............:192.168.74.2
Primary WINS Server....:192.168.74.2
有的IPCONFIG/ALL出来的是:
DNS Server.............:192.168.74.2
                                192.168.74.2(前面少了Primary WINS Server....:)
所以不好弄这个问题。。。不过DNS没有备用的也可以用

我现在最纠结的是。。。本批处理当次可以正常设置,第二次运行批处理后会变为IP和DNS都是自动获取的(好像秕处理不起作用一样,第三步::将IP和DNS改为自动获取后面的命令没执行或者执行出错?),第三次又正常,第四次不正常.....一直循环.....望大哥解惑!!!

TOP

3# jkyyjyn001


把@echo off删掉,看看第二次执行的时候哪里出错了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 jkyyjyn001 于 2011-4-18 00:05 编辑

4# Batcher
再次多谢Batcher 大哥的关注。。。
我用笨办法解决了DNS2的获取问题。。。可第二个问题还是弄不明白。。。我截了个图,和小批发上来让大家指点。。。(图是小批运行出错时截的。前面那部分我看不到,所以也没办法查是哪里出问题了。。。)
[attach]3729[/attach]
@echo off
for /f "tokens=3,4 delims==: " %%i in ('ipconfig ^|findstr /r "本"') do set b=%%i %%j
echo %b% > bd.txt
for /f %%a in (bd.txt) do set bd=%%a
set bdl="%bd%"
del bd.txt
netsh interface ip set address name=%bdl% source=dhcp >nul
netsh interface ip set dns name=%bdl% source=dhcp >nul
[attach]3729[/attach]
for /F "tokens=1,2* delims=:. " %%a in ('ipconfig/all') do (
if defined dns1 set dns3=%%a.%%b.%%c&set d&goto ip
if /i "%%a %%b"=="DNS Servers" (set "dns1=%%c")else set "dhcp=%%c")
:ip
echo %dns3%>dns3.txt
type dns3.txt | find "WINS" && goto jk2 || set dns2=%dns3% && goto jk
:jk2
for /f "delims=:  tokens=1,2" %%i in (dns3.txt) do set dns2=%%j
:jk
del dns3.txt


echo %dhcp% > dhcp.txt
for /f "delims=. tokens=1,2,3" %%a in (dhcp.txt) do set dip=%%a.%%b.%%c

set A=1
:ipl
SET /A A+=1
ping -n 1 %dip%.%A% | find "Reply" && echo "%dip%.%A%"已被使用 && goto ipl || set ip=%

dip%.%A%  

set MASK="255.255.255.0"
set GM=1
netsh interface ip set address name=%bdl% source=static addr=%IP% mask=%MASK% gateway=%dhcp%

gwmetric=%GM%   
Netsh interface IP set dns "%bdl%" source=static %dns1% register=primary
Netsh interface IP add dns "%bdl%" %dns2%
pause

TOP

返回列表