|
|
本帖最后由 窄口牛 于 2026-6-3 22:01 编辑
@echo off
Setlocal enabledelayedexpansion
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
pushd "%CD%"&& CD /D "%~dp0"
del %temp%\temp.txt /s /q>nul 2>nul
del %temp%\guid.txt /s /q>nul 2>nul
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
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)
)
for /f "tokens=1,2 delims==" %%a in ('wmic nic get GUID /value^|findstr "{"') do echo %%b>>%temp%\guid.txt
for /f "delims=" %%a in ('type %temp%\temp.txt^|findstr /v /g:%temp%\guid.txt') do reg delete %%a /f
del %temp%\temp.txt /s /q>nul
del %temp%\guid.txt /s /q>nul
pause>nul
@echo off
Setlocal enabledelayedexpansion
net session >nul 2>&1 || (
echo 正在请求管理员权限...
echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
cscript //b "%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs" >nul 2>&1
exit /b
)
for /f "delims=" %%v in ('
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|
findstr /i "\\\*SpeedDuplex\\enum" ^|
findstr /v "NdiExt"
') do (
set "enum_path=%%v"
set "adapter_path=!enum_path:\Ndi\Params\*SpeedDuplex\enum=!"
set "adapter_name="
for /f "tokens=2,*" %%A in ('
reg query "!adapter_path!" /v DriverDesc 2^>nul ^| find "REG_SZ"
') do (
set "adapter_name=%%B"
)
if defined adapter_name (
echo [网卡实例] !adapter_path:~-4!
echo [完整名称] !adapter_name!
echo [支持模式]:
for /f "tokens=2,*" %%a in ('
reg query "!enum_path!" ^| findstr /i "[0-9][0-9]* "
') do (
echo %%b
)
echo ========================================
)
)
echo 扫描完成
pause
@echo off
Setlocal enabledelayedexpansion
net session >nul 2>&1 || (
echo 正在请求管理员权限...
echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
cscript //b "%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs" >nul 2>&1
exit /b
)
set "backup_reg=%temp%\nic_config_%random%.reg"
echo 正在创建注册表备份...
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" "%backup_reg%" >nul
:main
for /f "delims=" %%a in ('
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s 2^>nul ^
^| findstr /i /r "\\\*SpeedDuplex$" ^
^| findstr /v "NdiExt"
') do (
call :process_speed_setting "%%a"
)
echo;
echo 操作完成! 备份位置: %backup_reg%
pause
exit /b
:process_speed_setting
set "speed_key=%~1"
set "adapter_path=%~1"
set "adapter_path=!adapter_path:\Ndi\Params\*SpeedDuplex=!"
set "adapter_path=!adapter_path:\Ndi\params\*SpeedDuplex=!"
set "adapter_name=未知网卡"
for /f "tokens=1,2*" %%b in ('
reg query "!adapter_path!" /v DriverDesc 2^>nul ^| findstr /i "REG_SZ"
') do (
set "name_part=%%d"
set "name_part=!name_part: = !" :: 替换制表符为空格
set "adapter_name=%%c !name_part!" :: 合并名称成分
set "adapter_name=!adapter_name: = !" :: 压缩连续空格
)
set "adapter_name=!adapter_name:REG_SZ=!"
set "adapter_name=!adapter_name: =!"
set "adapter_name=!adapter_name: (Microsoft)=!"
set "best_value=0"
set "max_speed=0"
for /f "tokens=1,2*" %%n in ('
reg query "%speed_key%\enum" 2^>nul ^| findstr /r "^[ ]*[0-9]"
') do (
set "num=%%n"
set "mode=%%p"
if "!mode!"=="自动协商" set "mode=Auto"
if "!mode!"=="自动侦测" set "mode=Auto"
set "speed=0"
for /f "tokens=1,2 delims= " %%a in ("!mode!") do (
if "%%A"=="100Gb" (
set "speed=100000"
set "duplex=%%b"
)
if "%%A"=="50Gb" (
set "speed=50000"
set "duplex=%%b"
)
if "%%A"=="40Gb" (
set "speed=40000"
set "duplex=%%b"
)
if "%%A"=="25Gb" (
set "speed=25000"
set "duplex=%%b"
)
if "%%A"=="10Gb" (
set "speed=10000"
set "duplex=%%b"
)
if "%%A"=="5Gb" (
set "speed=5000"
set "duplex=%%b"
)
if "%%A"=="2.5Gbps" (
set "speed=2500"
set "duplex=%%b"
)
if "%%a"=="1.0" (
set "speed=1000"
set "duplex=%%b"
) else (
set "speed=%%a"
set "duplex=%%b"
)
)
set "speed=!speed:Mbps=!"
set /a "speed=!speed:.=!" 2>nul
if "!duplex!"=="全双工" set /a "priority+=100"
if "!duplex!"=="Full" set /a "priority+=100"
if !priority! gtr !max_speed! (
set "max_speed=!priority!"
set "best_value=!num!"
)
)
if !best_value! gtr 0 (
echo 正在配置: !adapter_name!
reg add "%speed_key%" /v Default /t REG_SZ /d "!best_value!" /f >nul
echo [成功] 已设置默认值: !best_value! (!mode!)
)
set "target=已连接"
set "adapterList="
set "count=0"
echo 正在扫描所有网络适配器...
for /f "tokens=1,2,3,*" %%a in ('netsh interface show interface ^| findstr /i /c:"%target%"') do (
set /a count+=1
set "adapter[!count!]=%%b"
set "desc[!count!]=%%d"
)
if !count! lss 1 (
echo 未找到名称包含 [%target%] 的网络适配器
pause
exit /b
)
echo 找到 !count! 个匹配项:
for /l %%i in (1,1,!count!) do (
echo %%i [名称: !adapter[%%i]!] [描述: !desc[%%i]!]
)
echo.
for /l %%i in (1,1,!count!) do (
echo 正在处理适配器: !adapter[%%i]
echo.
netsh interface set interface "!adapter[%%i]!" disable
if %errorLevel% equ 0 (
echo 已禁用适配器
) else (
echo 禁用失败
pause
exit /b
)
timeout /t 5 /nobreak >nul
netsh interface set interface "!adapter[%%i]!" enable
if %errorLevel% equ 0 (
echo 已重新启用适配器
) else (
echo 启用失败
pause
exit /b
)
)
echo ========================================
exit /b
网卡.rar
(2.82 KB, 下载次数: 6)
|
|