2024年2月7日发(作者:)

NETSH 命令修复本地连接可以是重置winsock脚本,以前win2000系统可以重启网卡接口,但现在windowsXP中文版却不可以,老提示错误~ 后来才知道是汉化时的一个bug,对netsh命令我也是懂一点皮毛~既然你是想用dos来修复本地连接,我可以写个批处理让你实现~

代码如下:

@echo off&color f9

:chk

title 网络故障自动修复 by:小覃 QQ:120886134

cls&echo.&echo 正在监视网络. . .

ping -n 1 >nul&if not errorlevel 1 goto chk

cls&echo.&echo 网络故障,正在尝试修复. . .

arp -d>nul&nbtstat -R>nul 2>nul&ipconfig /flushdns>nul 2>nul&nbtstat

-RR>nul 2>nul&ipconfig /registerdns>nul 2>nul&ipconfig /release>nul

2>nul&ipconfig /renew>nul 2>nul

ping -n 2 >nul&if errorlevel 1 echo 尝试修复失败!&ping -n 2

127.1>nul

goto chk

以上是监视并修复本地网络的批代码~

如果修复时想添加重启网卡这一项,可以用以下代码:(我以前写的,因为是校园网固定IP用,所以没有ipconfig /release和ipconfig /renew这两项)

见代码:(代码写得有点垃圾,请高手不要笑~)

@echo off&color f9

title 网络故障自动诊断、修复 第二次修正版 来自:中南民族大学08软工小覃

cls

rem 工作之前,首先确保网卡处于开启状态

echo 正在重启网卡……

set i=0

goto restartnetinterface

:start

cls

echo 正在检测网络的连通性……

netsh -c interface ip dump >c:

for /f "skip=11 tokens=4 " %%i in (c:) do set temp1=%%i && goto

dns

:dns

for /f "skip=12 tokens=5 " %%i in (c:) do set temp2=%%i && goto

temp

:temp

echo %temp1%>"c:"

echo %temp2%>"c:"

for /f "tokens=2 delims==" %%i in (c:) do set gateip=%%i && goto

getdns

:getdns

for /f "tokens=2 delims==" %%i in (c:) do set dns=%%i && goto

checkdns

:checkdns

ping -n 1 %dns%>nul&if errorlevel 1 goto fix

ping -n 1 %gateip%>nul&if errorlevel 1 goto fix

echo 网络线路通信正常!

ping -n 2 127.1>nul

arp -d>nul

goto start

:fix

@ECHO OFF

cls

echo 当前网络异常!

echo 正在修复……

:restartnetinterface

rem 为了能够正常启用网卡,先对网卡名称进行修正

@reg delete

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNetwork{4D36E972-E325-11CE-BFC1-08002BE10318}{A4F125A6-5ECB-49EB-9C14-2151210C49EE}Connection /v Name /f>NUL

@reg add

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNetwork{4D36E972-E325-11CE-BFC1-08002BE10318}{A4F125A6-5ECB-49EB-9C14-2151210C49EE}Connection /v Name /t REG_sz /d 本地连接>NUL

if exist del /f /q

arp -d>nul&nbtstat -R>nul&ipconfig /flushdns>nul&nbtstat -RR>nul&ipconfig

/registerdns>nul

rem 重置 Winsock 目录

netsh winsock reset>nul

rem 重启本地连接

:::下面是重启网卡的脚本

(echo Const ssfCONTROLS = 3

echo sConnectionName = "本地连接"

echo sEnableVerb = "启用%(&A)"

echo sDisableVerb = "停用%(&B)")>

echo set shellApp = createobject%("ation") >>

echo set oControlPanel =

ace%(ssfCONTROLS) >>

(echo set oNetConnections = nothing

echo for each folderitem in

echo if = "网络连接" then

echo set oNetConnections = der:exit for

echo end if

echo next

echo if oNetConnections is nothing then

echo msgbox "未找到网络连接文件夹"

echo

echo end if

echo set oLanConnection = nothing

echo for each folderitem in )>>

echo if lcase%() = lcase(sConnectionName)

then >>

(echo set oLanConnection = folderitem:exit for

echo end if

echo next

echo if oLanConnection is nothing then

echo msgbox "未找到 '" ^& sConnectionName ^& "' item"

echo

echo end if

echo bEnabled = true

echo set oEnableVerb = nothing

echo set oDisableVerb = nothing

echo s = "Verbs: " ^& vbcrlf

echo for each verb in

echo s = s ^& vbcrlf ^&

echo if = sEnableVerb then

echo set oEnableVerb = verb

echo bEnabled = false

echo end if

echo if = sDisableVerb then

echo set oDisableVerb = verb

echo end if

echo next

echo if bEnabled then

echo

echo bEnabled = false

echo 1000)>>

echo do while %( true )>>

(echo for each verb in

echo if = sEnableVerb then

echo set oEnableVerb = verb

echo exit do

echo end if

echo 1000

echo next

echo loop

echo end if

echo

echo bEnabled = true

echo 5000%)>>

copy /b %windir%>nul

start /min %windir%

set /a i+=1

if %i%==1 goto skit

cls&ping -n 2 127.1>nul

echo 当前网络异常!正在修复……

echo 清除arp缓存、&ping -n 2 127.1>nul&cls

echo 当前网络异常!正在修复……

echo 清除netBT、&ping -n 2 127.1>nul&cls

echo 当前网络异常!正在修复……

echo 刷新netBT、&ping -n 2 127.1>nul&cls

echo 当前网络异常!正在修复……

echo 刷新dns缓存表、&ping -n 2 127.1>nul&cls

echo 当前网络异常!正在修复……&echo 注册ip

ping -n 2 127.1>nul&cls

echo 当前网络异常!正在修复……

echo 重置 Winsock 目录&ping -n 2 127.1>nul&cls

echo 正在完成对您本地连接修复~&echo 请稍候……

ping -n 2 127.1>nul&cls&echo.

echo Windows完成修复您的连接。您可以重新尝试连接。

echo 如果问题仍然存在,请与网络管理员联系。

echo.&echo 即将进入网络监视状态……

ping -n 10 127.1>nul&del /f /q

del /f /q %windir%

goto start

:skit

cls&echo 正在修复……&echo 清除arp缓存、&ping -n 1 127.1>nul

cls&echo 正在修复……&echo 清除netBT、&ping -n 1 127.1>nul

cls&echo 正在修复……&echo 刷新netBT、&ping -n 1 127.1>nul

cls&echo 正在修复……&echo 刷新dns缓存表、&ping -n 1 127.1>nul

cls&echo 正在修复……&echo 注册ip&ping -n 1 127.1>nul

cls&echo 正在修复……&echo 重置 Winsock 目录&ping -n 1 127.1>nul

cls&echo 正在完成对您本地连接修复~&echo 请稍候……&ping -n 2

127.1>nul&cls&echo.

echo Windows完成修复您的连接。您可以重新尝试连接。

echo 如果问题仍然存在,请与网络管理员联系。&echo.

echo 即将进入网络监视状态……

ping -n 10 127.1>nul&del /f /q

del /f /q %windir%

goto start

以上是修复本地连接的批处理~

修复的话不需要用到你说的netsh,使用ipconfig就可以实现了。

ipconfig /release(释放当前本地连接配置信息)

ipconfig /renew (创建一个新的连接,也就是修复)

netsh的用途:

可以使用 工具执行以下任务:

配置接口。

配置路由协议。

配置筛选器。

配置路由。

配置基于 Windows 的远程访问路由器(它运行路由和远程访问服务器 (RRAS)

服务)的远程访问行为。

显示任何计算机上当前运行路由器的配置。

使用脚本功能以批处理模式运行一组针对指定路由器的命令。

工具的语法为:

netsh [-r router name] [-a AliasFile] [-c Context] [Command | -f ScriptFile]

要显示在上下文中可以使用的子上下文和命令的列表,请在 netsh> 命令提示符处键入上下文名称,后跟空格和 ?。例如,要显示可以在 /routing 上下文使用的子上下文和命令的列表,应在 netsh> 命令提示符处键入 routing ?,然后按

Enter。

回到顶端

上下文

上下文字符串附加在 工具命令之后,并被传递到相关的帮助器。帮助器可以有一个或多个映射到上下文的入口点。 工具中可使用的一些上下文是:

上下文命令:/dhcp

结果:更改为动态主机配置协议 (DHCP) 上下文。

上下文命令:/ras

结果:更改为远程访问服务器 (RAS) 上下文。

上下文命令:/routing

结果:更改为路由上下文。

上下文命令:/wins

结果:更改为 Windows Internet 命名服务 (WINS) 上下文。

上下文也可嵌套在其他上下文中。例如,以下上下文在 netsh>ras 上下文中运行:

上下文命令:/ip

结果:更改为 Internet 协议 (IP) 上下文。

上下文命令:/ipx

结果:更改为网际数据包交换 (IPX) 上下文。

上下文命令:/netbeui

结果:更改为 NetBios 增强型用户接口 (NETBEUI) 上下文。

以下子上下文在 netsh>routing ip 上下文中运行:

上下文命令:/autodhcp

结果:更改为 autodhcp 子上下文。

上下文命令:/dnsproxy

结果:更改为 dnsproxy 子上下文。

上下文命令:/igmp

结果:更改为 Internet 组成员身份协议 (IGMP) 子上下文。

上下文命令:/mib

结果:更改为管理信息库 (MIB) 子上下文。

上下文命令:/nat

结果:更改为网络地址转换 (NAT) 子上下文。

上下文命令:/ospf

结果:更改为开放式最短路径优先 (OSPF) 子上下文。

上下文命令:/relay

结果:更改为中继子上下文。

上下文命令:/rip

结果:更改为路由信息协议 (RIP) 子上下文。

回到顶端

命令

以下附加命令可以与 工具一起使用:

注意:可选参数用方括号 ([ ]) 括起来。替代项之间用竖线 (|) 字符分开。

上下文命令:/?

结果:显示帮助。

上下文命令:/abort

结果:放弃在脱机模式进行的任何更改。在联机模式下不起作用。

上下文命令:/add helper DLL-name

结果:安装 中的 helper .dll 文件。

上下文命令:/alias [alias-name] [string1] [string2 ...]

结果:如果为 /alias,则列出所有别名。如果为 /alias alias-name,则显示等效的字符串。如果为 /alias alias-name string1 string2 ...,则将别名设置为指定的字符串。

上下文命令:/bye

结果:退出程序。

上下文命令:/commit

结果:将在脱机模式下所做的任何更改提交给路由器。在联机模式下不起作用。

上下文命令:/delete helper .dll file name

结果:删除 中的 helper .dll 文件。

上下文命令:/dump -file name

结果:将配置转储或附加到文本文件。

上下文命令:/exec script file name

结果:加载脚本文件,然后执行其中的命令。

上下文命令:/exit

结果:退出程序。

上下文命令:/h

结果:显示帮助。

上下文命令:/help

结果:显示帮助。

上下文命令:/offline

结果:将当前模式设置为脱机。保存在此模式下所做的任何更改,但需要在路由器中设置“commit”或“online”命令。

上下文命令:/online

结果:将当前模式设置为联机。在此模式下所做的任何更改立即在路由器中反映。

上下文命令:/popd

结果:从堆栈中取出上下文。

上下文命令:/pushd

结果:将当前上下文推入堆栈中。

上下文命令:/quit

结果:退出程序。

上下文命令:/set mode [mode =] online | offline

结果:将当前模式设置为联机或脱机。

上下文命令:/show alias | helper | mode

结果:如果为 /show alias,则列出所有定义的别名。如果为 /show helper,则列出所有顶层帮助器。如果为 /show mode,则显示当前模式。

上下文命令:/unalias alias name

结果:删除指定的别名。

回到顶端

可用的帮助器动态连接库文件

路由&远程访问 IP 配置 -

路由&远程访问 IPX 配置 -

接口 -

RAS -

DHCP -

WINS -

回到顶端

帮助器动态连接库文件的相关注册表项

HKEY_LOCAL_MACHINE/Software/Microsoft/NetSh/

REG_SZ:

REG_SZ:

REG_SZ:

REG_SZ:

REG_SZ:

REG_SZ:

注意:如果尝试使用 Netsh dump - 将配置转储到未运行的文件,请尝试在命令行中使用以下语法:netsh dump >filename or pathfilename。