无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 14227|回复: 43
打印 上一主题 下一主题

[求助] 求个有用的批处理,删除所有本地连接x上一级注册表

  [复制链接]
跳转到指定楼层
#
发表于 2016-6-24 22:47:09 来自手机 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
也就是清理注册表里无用的网络设置。包括本地连接和本地连接1.2.3.4.56.7.8.9........
来自 43#
 楼主| 发表于 2021-12-10 19:52:52 | 只看该作者
本帖最后由 窄口牛 于 2021-12-10 20:05 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. reg query HKU\S-1-5-20>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul
  4. pushd "%CD%"&& CD /D "%~dp0"
  5. del %temp%\temp.txt /s /q>nul 2>nul
  6. del %temp%\guid.txt /s /q>nul 2>nul
  7. for /f "tokens=1-3 delims=}" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s^|find ""') do echo %%a}%%b}>>%temp%\temp.txt
  8. for /l %%a in (1,1,2) do (for /f "tokens=1-3 delims=}" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00%%a\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s^|find ""') do echo %%a}%%b}>>%temp%\temp.txt)
  9. )
  10. for /f "tokens=1,2 delims==" %%a in ('wmic nic get GUID /value^|findstr "{"') do echo %%b>>%temp%\guid.txt
  11. for /f "delims=" %%a in ('type %temp%\temp.txt^|findstr /v /g:%temp%\guid.txt') do reg delete %%a  /f
  12. del %temp%\temp.txt /s /q>nul
  13. del %temp%\guid.txt /s /q>nul
  14. pause>nul
复制代码
删除多余网络连接.rar (625 Bytes, 下载次数: 34)
回复

使用道具 举报

42#
发表于 2024-6-4 23:02:08 来自手机 | 只看该作者
谢谢分享!
回复

使用道具 举报

41#
 楼主| 发表于 2022-9-4 16:37:08 | 只看该作者
接下来就应该可以修改本地连接名字了,把错误的序号删除,把其余排序,并且删除本地连接和序号中的空格,去掉空格便于下一步行动,比如禁用启动本地连接等等。
回复

使用道具 举报

40#
发表于 2021-12-10 20:18:01 来自手机 | 只看该作者
还是本坛比较自由,好多论坛那NM版规严丝合缝的,就这贴子,我们这几个人早就关小黑屋了
回复

使用道具 举报

39#
发表于 2021-12-10 20:13:07 | 只看该作者
学习!感谢分享!
回复

使用道具 举报

38#
发表于 2021-12-10 18:57:20 | 只看该作者
我几个月前做出修改网卡设置参数的批处理,速度飞快!
回复

使用道具 举报

37#
 楼主| 发表于 2021-12-10 18:06:20 | 只看该作者
大概酱紫
  1. for /f "tokens=1,2 delims==" %%a in ('wmic nic get GUID /value^|findstr "{"') do echo %%b>>7.txt
复制代码
提取到实际的连接id
  1. reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s>ControlSet.reg
  2. for /l %%a in (0,1,3) do (
  3. reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00%%a\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} /f "*连接*" /s>>ControlSet.reg
  4. )
复制代码
获取注册表的所有的
对比后删除无效的
鼓捣了一下午没搞定
回复

使用道具 举报

36#
发表于 2021-12-10 15:09:34 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-12-10 15:19 编辑

为啥不用 批处理调用 reg.exe ?

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set "namex=本地连接*"
  4. set "reg_path0=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network"
  5. set reg_key=
  6. for /f "delims=" %%c in ('reg query !reg_path0! /s /v  name') do (
  7.         for /f "tokens=3*" %%i in ("%%c") do (
  8.                 if /i "%%i" == "!namex!" (
  9.                         echo %%i %%j
  10.                         for /f "delims=" %%x in ("\!reg_key!") do (
  11.                                 set reg_path=%%~px
  12.                                 echo !reg_path:~1,-1!
  13.                                 rem 此行为核心删除指令,已经注释掉了。
  14.                                 rem reg delete !reg_path:~1,-1! /f
  15.                         )
  16.                         echo --------------------
  17.                 )
  18.         )
  19.         set reg_key=%%c
  20. )
复制代码
回复

使用道具 举报

35#
 楼主| 发表于 2021-12-10 09:37:25 来自手机 | 只看该作者
这个搞的更高级一点,从适配器配置页读取实际的网络连接,然后去删除多余的。
回复

使用道具 举报

34#
发表于 2016-9-27 14:33:53 | 只看该作者
很不错的啊












蓝品盾残疾人扶手
回复

使用道具 举报

33#
发表于 2016-9-13 15:02:30 | 只看该作者
楼主,太爱你了。












蓝品盾PVC防撞扶手
回复

使用道具 举报

32#
 楼主| 发表于 2016-6-29 10:32:48 来自手机 | 只看该作者
虚拟机是肯定的,自xp开始,安装好就有vmare的文件夹和注册表
回复

使用道具 举报

31#
发表于 2016-6-29 10:16:05 | 只看该作者
尼玛,不查不知道,看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PnP\Pci\CardList,竟然有Intel 82443BX信息,难道微软Windows7也是用虚拟机搞出来的?我系统可是原版ISO安装的系统,我连激活都还没有激活。
找到网卡了,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network下面,不过和协议什么的混在一起,要搜索PnpInstanceID然后判断一下name,根据查找到的PnpInstanceID去删除enum下的数据。
封装程序好象自带这个功能吧,我除了当年封装过2000,后来自用的系统都是安装的。
程序晚上写,现在先去睡觉。你先把你具体想要如何应用,有什么要求,要达到什么样效果说一下,REG QUERY命令返回的数据处理很麻烦,处理注册表VBS搞更简单一点。
回复

使用道具 举报

30#
 楼主| 发表于 2016-6-26 11:38:53 来自手机 | 只看该作者
好的,非常感谢老大出手帮助!
回复

使用道具 举报

29#
发表于 2016-6-26 11:31:27 | 只看该作者
本帖最后由 pogua007 于 2016-6-26 11:43 编辑
窄口牛 发表于 2016-6-26 11:24
OK
前面修改:
Set WshShell = CreateObject("WScript.Shell")


中间不要加引号,就左右两端一对引号,引号的作用是表示这是一个字符串,你多加引号,脚本会出错的。我在每个网络名称后面都要加逗号作为结束的标志。要不instr搜索"本地连接"确实是属于"本地连接2"里面的的字符串。
你理解错误了,每个设备后面,只加逗号,那个引号是我把逗号括起来用的
回复

使用道具 举报

28#
 楼主| 发表于 2016-6-26 11:24:29 | 只看该作者
OK
前面修改:
Set WshShell = CreateObject("WScript.Shell")
Const HKLM = &H80000002
strActivenet ="本地连接,""Bluetooth 网络连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
就完美删除垃圾了

点评

中间不要加引号,就左右两端一对引号,每个网络名称后面都要加逗号作为结束的标志。要不instr搜索"本地连接确实"是"本地连接2"中间的字符串  详情 回复 发表于 2016-6-26 11:31
回复

使用道具 举报

27#
发表于 2016-6-26 10:57:06 | 只看该作者
要测试,就把两行的WshShell.PopUp前的单引号去掉,WshShell.Run前用单引号注释,要运行就反之。
回复

使用道具 举报

26#
发表于 2016-6-26 10:54:58 | 只看该作者
改好了

  1. Set WshShell = CreateObject("WScript.Shell")
  2. Const HKLM = &H80000002
  3. strActivenet ="本地连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
  4. Dim strPath(2)
  5. strPath(0) = "CurrentControlSet"
  6. strPath(1) = "ControlSet001"
  7. strPath(2) = "ControlSet002"
  8. Set oReg = GetObject("Winmgmts:\root\default:StdRegProv")
  9. For i = 0 To uBound(strPath)
  10.         strPathA="SYSTEM"  & strPath(i) & "\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
  11.         oReg.EnumKey HKLM,strPathA,entries
  12.         On Error Resume Next
  13.         For Each subkey In entries
  14.                 strPathA1 = strPathA & "" & subkey
  15.                 strPathA2 = strPathA1 & "\Connection"
  16.                 oReg.GetStringValue HKLM,strPathA2,"Name",strName
  17.                 If IsNull(strName) = False Then
  18.                         'oReg.GetStringValue HKLM,strPathA2,"Name",strName
  19.                         If InStr(1,strActivenet,strName & ",",1) = 0 Then
  20.                                 oReg.GetStringValue HKLM,strPathA2,"PnpInstanceID",strValue
  21.                                 If IsNull(strValue) = False Then
  22.                                         strPathB = "HKLM\SYSTEM" & strPath(i) & "\Enum" & strValue
  23.                                         'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "设备位置:" & strPathB ''本行为测试,如需测试,把本行最前的单引号删掉,把两行WshShell.Run用单引号注释,则不会产生操作,只显示找到的数据
  24.                                         WshShell.Run "reg delete " & strPathB & " /f",0 '删除网络设备的硬件信息
  25.                                 Else
  26.                                         'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "此设备没有硬件信息,应该是被微软清除之后残留,作用未知,建议备份注册表之后再删除" '''本行也是测试
  27.                                 End If
  28.                                 WshShell.Run "reg delete HKLM" & strPathA1 & " /f",0 '删除显示的网络设备
  29.                         End If
  30.                 End If
  31.         Next
  32. Next
复制代码

那三个ControlSet其实只需要处理CurrentControlSet就可以了,001会在关机的时候被CurrentControlSet覆盖,002是启动菜单的那个最后一次正确配置,在“正确”启动之后被001覆盖,微软的用户登录了就算正确启动了
回复

使用道具 举报

25#
 楼主| 发表于 2016-6-26 10:27:50 来自手机 | 只看该作者
我的是中文win7sp1旗舰。我也是发现好像原版也有很多垃圾网卡信息。
回复

使用道具 举报

24#
发表于 2016-6-26 10:20:59 | 只看该作者
叹口气,抽根烟,你这注册表是什么版本下的?我系统中,也有本地连接×1,但是是英文名字的Local Area Connection,对了我系统怎么会有Local Area Connection呢,在英文版系统上网络连接就是Local Area Connection,这些虽然也是垃圾,但是应该不需要清理,绝对是微软遗留的,娘的,微软原版系统也是封装过,还不是封装一次,XP里面就没有这些网卡。只能老老实实的检索name了。
回复

使用道具 举报

23#
发表于 2016-6-26 09:59:34 | 只看该作者

你不是把整个system都传给我了吧,你导个net的reg文件就行了
回复

使用道具 举报

22#
 楼主| 发表于 2016-6-26 09:22:40 | 只看该作者
好的

reg.part01.rar

1010 KB, 下载次数: 3, 下载积分: 无忧币 -2

reg.part02.rar

892.85 KB, 下载次数: 2, 下载积分: 无忧币 -2

点评

你不是把整个system都传给我了吧,你导个net的reg文件就行了  详情 回复 发表于 2016-6-26 09:59
回复

使用道具 举报

21#
发表于 2016-6-26 08:45:35 | 只看该作者
窄口牛 发表于 2016-6-26 07:05
批处理我还能马马虎虎改改,vbs几乎玩不了。

我这测试vbox的网卡还有网桥都能找出来。我在虚拟机上设置了好多网卡,然后有删掉也能找出来,不过虚拟机的网卡种类比较单一才两个系列。
你把你现在的注册表传上来我看看,我看看实际应用系统注册表是什么样的。
理论上只要是网卡别管是不是虚拟的都会有硬件信息,照你那样子,8个网卡才找到两个,剩下的硬件信息怎么丢的呢,丢了之后还能找什么作为标志都要考虑的。
回复

使用道具 举报

20#
 楼主| 发表于 2016-6-26 07:05:03 来自手机 | 只看该作者
批处理我还能马马虎虎改改,vbs几乎玩不了。

点评

我这测试vbox的网卡还有网桥都能找出来。我在虚拟机上设置了好多网卡,然后有删掉也能找出来,不过虚拟机的网卡种类比较单一才两个系列。 你把你现在的注册表传上来我看看,我看看实际应用系统注册表是什么样的。  详情 回复 发表于 2016-6-26 08:45
回复

使用道具 举报

19#
 楼主| 发表于 2016-6-26 06:39:23 | 只看该作者
我这里测试,只找到两个蓝牙网络连接。我还在试图修改中
回复

使用道具 举报

18#
发表于 2016-6-26 02:25:19 | 只看该作者
根据你的需要改好了,自动删除,没有提示,可以设置保留的项目。前一个脚本果然删除有问题,功能相对强大的VBS限制也多,无论是RegDelete,还是WMI的DeleteKey都不能删除带子项的项,所以我下面的脚本使用reg.exe删除项了。
  1. Set WshShell = CreateObject("WScript.Shell")
  2. Const HKLM = &H80000002
  3. strActivenet ="本地连接,"  ''设置要保留的网络设备名称,每个网络设备后面要加小写逗号",",即使只有1个要保留的也要加
  4. Dim strPath(2)
  5. strPath(0) = "CurrentControlSet"
  6. strPath(1) = "ControlSet001"
  7. strPath(2) = "ControlSet002"
  8. Set oReg = GetObject("Winmgmts:\root\default:StdRegProv")
  9. For i = 0 To uBound(strPath)
  10.         strPathA="SYSTEM"  & strPath(i) & "\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
  11.         oReg.EnumKey HKLM,strPathA,entries
  12.         On Error Resume Next ''如果CurrentControlSet/ControlSet001/ControlSet002有项不存在,下面会出错,虽然实际使用中不可能,但是还是处理一下吧。
  13.         For Each subkey In entries
  14.                 strPathA1 = strPathA & "" & subkey
  15.                 strPathA2 = strPathA1 & "\Connection"
  16.                 oReg.GetStringValue HKLM,strPathA2,"PnpInstanceID",strValue
  17.                 If IsNull(strValue) = False Then
  18.                         oReg.GetStringValue HKLM,strPathA2,"Name",strName
  19.                         If InStr(1,strActivenet,strName & ",",1) = 0 Then
  20.                                 strPathB = "HKLM\SYSTEM" & strPath(i) & "\Enum" & strValue
  21.                                 'WshShell.PopUp "找到网络连接: " & strName & vbCrLf & "设备位置:" & strPathB ''本行为测试信息,如需测试,请把本行最前的单引号删掉,把下面两行用单引号注释起来,则不会产生操作,只显示找到的数据
  22.                                 WshShell.Run "reg delete HKLM" & strPathA1 & " /f",0 '删除显示的网络设备
  23.                                 WshShell.Run "reg delete " & strPathB & " /f",0 '删除网络设备的硬件信息
  24.                         End If
  25.                 End If
  26.         Next
  27. Next
复制代码
回复

使用道具 举报

17#
发表于 2016-6-26 01:26:49 来自手机 | 只看该作者
pogua007 发表于 2016-6-25 22:43
我回来了

用ipenabled判读不准确,会把虚拟设备都删掉的,用PnpInstanceID判断是否网络设备比较好。

其实,我也不晓得那注册表有什么意义,因为原生系统就有,Win8,Win10都有多出来的,而且网络连接那里正常,不晓得怎么弄出来好几个本地连接,不便于测试,也不晓得有没有效果,因为删之前之后都没有重复的……
回复

使用道具 举报

16#
 楼主| 发表于 2016-6-26 00:33:50 来自手机 | 只看该作者
恩,是的。
回复

使用道具 举报

15#
发表于 2016-6-26 00:09:46 | 只看该作者
只有ControlSet001和ControlSet002吧,还有更多吗?再加上CurrentControlSet只有3个吧,而且是确定的值,直接设置路径就好了,为3个确定的值去枚举反而麻烦。
第三变量不等于某值,值等于预设值,删除第二变量的注册表项,你的意思是保留设定的值,自动删除其他的事吗
回复

使用道具 举报

14#
 楼主| 发表于 2016-6-25 23:13:08 来自手机 | 只看该作者
第一变量为CurrentControlSet和ControlSet00n,n为整数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-22 12:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表