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

[系统相关] (不完美解决办法)win7下批处理添加/修改所有物理网卡(排除虚拟网卡)的dns

本帖最后由 wd4455 于 2016-7-11 10:46 编辑

不完美解决办法http://www.bathome.net/redirect. ... 0952&pid=187566


本希望用注册表导入的办法搞定,因为需要注入不少的键值,但是弄了很久发觉{xxx}键值是不固定的不能用注册表导入的办法一次性解决问题,之后就在研究用bat的办法搞定dns的写入,在晚上百度了很久了一些脚本.研究了很久内能实现脚本.有恳请大虾修改或写一个获取所有物理网卡并自动修改所有网卡的dns的脚本么?

1.这个脚本说是能获取活动网卡的名称,win7上获取的名称完全不正确,请大虾看看哪里错了
  1. @echo off
  2. ::判断本地连接 赋值a
  3. for /f "tokens=3,4 delims== " %%i in ('ipconfig ^|findstr /r "本"') do echo %%i %%j >DNS.txt
  4. for /f "tokens=1 delims==:" %%d in (DNS.txt) do set a=%%d
  5. ::TYPE "%~sdp0"/DNS.txt
  6. ::pause
  7. netsh interface ip set dns name="%a%" source=static addr=202.98.96.68
  8. netsh interface ip add dns "%a%" 61.139.2.69 index=2
  9. pause
复制代码
2.直接设置连接名称要等很久...
  1. netsh interface ip set dns name="本地连接" source=static addr=202.96.199.132
  2. netsh interface ip add dns "本地连接" 202.96.64.38 index=2
  3. netsh interface ip set dns name="本地连接 2" source=static addr=202.96.199.132
  4. netsh interface ip add dns "本地连接 2" 202.96.64.38 index=2
  5. ::等等.....
复制代码
3.这个脚本完全没有获取网卡名称
  1. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j
  2. FOR /F "tokens=1* delims=:" %%i in ("%name%") do set 网卡名称=%%i
  3. netsh -c interface ip add dns name="%网卡名称%" addr=202.96.199.132 index=1
  4. netsh -c interface ip add dns name="%网卡名称%" addr=202.96.64.38 index=2
复制代码
4.从本站<支持多网卡,多模式,多系统的IP切换的批处理>提取的脚本...网卡名字倒是能获取到,但是研究了很久就是不会用(名称中会有虚拟网卡),之后的选择界面按数字没反应.后面的修改网卡的代码完全看不懂
  1. echo 本机网卡:
  2. for /f "tokens=1*" %%g in ('ipconfig^|find /i "适配器"') do set/a bbb+=1&set zccc_!bbb!=%%h
  3. for /l %%q in (1,1,!bbb!) do set zccz=!zccc_%%q!&echo %%q.!zccz:~0,-1!
复制代码
http://www.bathome.net/viewthread.php?tid=8094
5.从本站《取名称、多连接、虚拟、多环境、路由》的代码太复杂了,完全读不懂。
http://www.bathome.net/thread-34421-1-1.html
求大神修正下代码.
1

评分人数

回复 19# pcl_test


::netsh interface ip set dns name="%#1%" source=static addr=91.12.80.100
netsh interface ip add dns "%#1%" 155.12.64.1 index=2
都会显示:
     配置的dns服务器不正确或者不存在
是怎么回事?dns是修改了的。

TOP

本帖最后由 wd4455 于 2016-7-11 10:43 编辑

回复 19# pcl_test


    不好意思了大神,小弟愚钝,研究了很久变量的连续赋值没弄明白最后使用了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims==" %%a in ('wmic nic where "PNPDeviceID like 'pci\\%%' or PNPDeviceID like 'usb\\%%'" get NetConnectionID /value^|find "="') do set /a n+=1&set "#!n!=%%b"
  3. if defined #1 (goto:#1) else (goto:结束)
  4. :#1
  5. netsh interface ip set dns name="%#1%" source=static addr=202.96.199.132
  6. netsh interface ip add dns "%#1%" 202.96.64.38 index=2
  7. if defined #2 (goto:#2) else (goto:结束)
  8. :#2
  9. netsh interface ip set dns name="%#2%" source=static addr=202.96.199.132
  10. netsh interface ip add dns "%#2%" 202.96.64.38 index=2
  11. if defined #3 (goto:#3) else (goto:结束)
  12. :#3
  13. netsh interface ip set dns name="%#3%" source=static addr=202.96.199.132
  14. netsh interface ip add dns "%#3%" 202.96.64.38 index=2
  15. if defined #4 (goto:#4) else (goto:结束)
  16. :#4
  17. netsh interface ip set dns name="%#4%" source=static addr=202.96.199.132
  18. netsh interface ip add dns "%#4%" 202.96.64.38 index=2
  19. if defined #5 (goto:#5) else (goto:结束)
  20. :#5
  21. netsh interface ip set dns name="%#5%" source=static addr=202.96.199.132
  22. netsh interface ip add dns "%#5%" 202.96.64.38 index=2
  23. :结束
  24. exit
复制代码
的办法绕开赋值。。。 不好意思有被教导了

TOP

感谢。。。犹如明灯一般。。。我继续研究。。。

TOP

回复 18# wd4455

对照9L
  1. @echo off
  2. set #1=举
  3. set #2=个
  4. set #3=栗
  5. set #4=子
  6. set #
  7. echo;%#1%-%#2%-%#3%-%#4%
  8. for /l %%a in (1 1 5) do set _%%a=%%a
  9. set _
  10. echo;%_1% %_3% %_5%
  11. pause
复制代码
1

评分人数

TOP

本帖最后由 wd4455 于 2016-7-8 09:53 编辑

回复 15# pcl_test


    不好意思大神。。。研究了2天貌似不能用bat实现类似数组的功能。。取值取不到前面的值。。。实在不好意思
不能自动将获取的#1-#N自动带入。。每次获取赋值后自动运行一次修改nds?
貌似需要用循环语句来实现?

TOP

还在努力啃脚本中。。。群组赋值是叫数组么?

TOP

本帖最后由 wd4455 于 2016-7-6 13:10 编辑

不好意思,没学过。只能百度找实例慢慢研究
看错楼了。。改的9楼。。我看的10楼。。研究了半天
tokens=

TOP

回复 14# wd4455

可以
#数字 这些就是变量
fou /l 这句不是把 #数字 这些变量的值读出来了么

TOP

本帖最后由 wd4455 于 2016-7-6 12:59 编辑

请问。获取的脚本变量直接可以带入命令么?我怎么试验了半天每次提取的变量都是最后一个?
do set /a n+=1&set "#!n!=%%b" 这里的变量我怎么带入进去?

TOP

这就不奇怪了,你的无线网卡是外置的。
9L已改

TOP

2 张有线网卡,其中一张禁用 2张无线网卡一个禁用

1、-------------------------------------------------------------------
wmic nic >1.txt
USB Wireless LAN Card           无线网络连接     7                    FALSE   
PCIe GBE Family Controller #2   本地连接 2       2                    TRUE  
Realtek PCIe GBE Family Controller      本地连接         4                    FALSE
802.11n USB Wireless LAN Card           WLAN             0                    FALSE

TOP

回复 10# wd4455
  1. wmic nic get PNPDeviceID,NetConnectionID /value|find "=">D:\结果.txt
复制代码
把结果.txt里的内容发出来看看

TOP

本帖最后由 pcl_test 于 2016-7-6 12:14 编辑

回复 9# pcl_test
始终只有本地连接,看不到无线网卡。。不是要用netconnectionid才行?
只能看到在用网卡,网卡禁用后不能显示删除^"netconnectionstatus^=2 AND 后脚本出错。。
  1. for /f "delims=" %%a in ('wmic nic where  physicaladapter^=TRUE^ get netconnectionid/value^|find "="') do set %%a
复制代码

TOP

本帖最后由 pcl_test 于 2016-7-6 12:49 编辑

方法一
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims==" %%a in ('wmic nic where "PNPDeviceID like 'pci\\%%' or PNPDeviceID like 'usb\\%%'" get NetConnectionID /value^|find "="') do set /a n+=1&set "#!n!=%%b"
  3. set #
  4. for /l %%a in (1 1 %n%) do echo;!#%%a!
  5. pause
复制代码
1

评分人数

TOP

返回列表