[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

评分人数

本帖最后由 flyinnet9 于 2016-7-5 15:56 编辑

找活动物理网卡
wmic nic get netconnectionid,netconnectionstatus,physicaladapter

netconnectionstatus=2是活动的

TOP

  1. wmic nic where "PNPDeviceID like 'pci\\%%'" get Caption,NetConnectionID,Index,Name /value
复制代码
配合netsh interface或wmic nicconfig即可

TOP

2位大神。。取名后怎么将获得的名字带入
netsh -c interface ip add dns name="%网卡名称%" addr=202.96.199.132 index=1

这个函数的结果不会利用setlocal enabledelayedexpansion,本网的几个样本边百度边学没看懂。。。只是弄明白了
  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
复制代码
是怎么回事
怎么利用%%q.!zccz:~0,-1。。后面的代码完全读不懂,有类似的帖子么?搜了很久没看到

TOP

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

回复 3# pcl_test
脚本的结果好像不包含无线网卡对么?
另 取名称、多连接、虚拟、多环境、路由.bat和支持多网卡,多模式,多系统的IP切换的批处理 .bat的那一段是将用了后的setlocal enabledelayedexpansion变量带入的?
http://www.jb51.net/article/29323.htm中没有看到实例。。
比如1.XXX
      2.XXXX
      3.XXX
怎么过将这些变量带入netsh -c interface ip add dns name="%网卡名称%" addr=202.96.199.132 index=1 ?
  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!
复制代码
的代码中怎么修改都需要加入序号。。 set/a bbb+=1,
怎么直接利用setlocal enabledelayedexpansion后直接将获得的变量带入修改?
没有接触过编程,描述的有点混乱不好意思。
目的只有一个利用setlocal enabledelayedexpansion通过for /f "tokens=将wmic nic get netconnectionid获得的结果直接带入netsh -c interface ip add dns name="%网卡名称%" addr=202.96.199.132 index=1

TOP

  1. for /f "delims=" %%a in ('wmic nic where ^"netconnectionstatus^=2 AND physicaladapter^=TRUE^" get netconnectionid/value^|find "="') do set %%a
  2. netsh interface ip set dns name="%netconnectionid%" source=static addr=202.98.96.68
复制代码
1

评分人数

    • wd4455: 活动网卡更换dns技术 + 1

TOP

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

回复 6# flyinnet9

啊。。谢谢啊~
这个是自动获取所有物理网卡自动带入的完整代码?
能附加一点解释么?

TOP

本帖最后由 wd4455 于 2016-7-6 11:39 编辑

活动网卡获取并修改的完整代码。。非常感谢~,我需要的修改所有物理网卡的。。'wmic nic where ^"netconnectionstatus^=2这里修改了好久都不能用wmic nic get netconnectionid代替。。。
应该怎么将get netconnectionid带入
使用setlocal enabledelayedexpansion
for /f "delims=" %%a in ('wmic nic where 将^"get netconnectionid带入 AND physicaladapter^=TRUE^" get netconnectionid/value^|find "="') do set %%a
并将获得的变量直接带入netsh interface ip set dns name="%netconnectionid%" ?
%netconnectionid%这个变量赋值是蓝色的那一句么?
AND physicaladapter^=TRUE^这句显示查询结果为TRUE的是怎么写的?试验了半天没不是查询无效就是表达式无效
使用setlocal enabledelayedexpansion怎么提取变量前面的变量?。。直接使用变量每次结果都是最后一个。

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

本帖最后由 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

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

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

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

TOP

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

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

TOP

回复 14# wd4455

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

TOP

返回列表