无线承载网络(wifi_热点)bat批处理(自动/手动)_3.7.1_2017.2.26
多次改进的版本,修正了许多问题,实现了全自动选择网络接口,打开后一个回车就可以创建出热点! 批处理方式首次实现,之前博客打不开,先放无忧论坛了,bat吧也发了一次,看到过的就不用提醒了。将下面的内容保存为: WiFi热点设置工具bat_v3.7.1.bat
运行即可,如果是administrator登录的,可能出现循环弹cmd窗口现象,请右键选择“以管理员权限打开”。
@ECHO OFFTitle WiFi热点设置工具 v3.7.1 [By 若水]setlocal ENABLEDELAYEDEXPANSIONmode con: cols=65 lines=25color 0a:: 批处理获取管理员权限:------------------------------------- %1 mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&&exit /b pushd "%CD%" CD /D "%~dp0":-------------------------------------- set selcet=1GOTO ICSvbs:MENUclsECHO.ECHO. =-= WiFi热点设置工具 v3.7.1 =-=ECHO. [支持Win7、Win8、Win10]ECHO. [2016.12.13]ECHO. ┏━━━━━━━━━━━━━━━━━━━━━━━━┓ECHO. ECHO. 1 开启 热点 自动 3 查看 热点 状态 ECHO. 2 开启 热点 手动 4 关闭 热点 ECHO. ECHO. 5 更改 热点 设置 7 网络连接控制中心 ECHO. 6 查看 热点 设置 0 退 出 ECHO. ECHO. ┗━━━━━━━━━━━━━━━━━━━━━━━━┛ECHO.Set /p selcet=请输入数字并按 [Enter] 确定(默认为:%selcet%):SET selcet=%selcet:~0,1%If "%selcet%"=="1" set "auto=true" && Goto wifi_startIf "%selcet%"=="2" set "auto=false" && Goto wifi_startIf "%selcet%"=="3" Goto wifi_statusIf "%selcet%"=="4" Goto wifi_stopIf "%selcet%"=="5" Goto wifi_configIf "%selcet%"=="6" Goto wifi_show_configIf "%selcet%"=="7" set "selcet=3" && ncpa.cplIf "%selcet%"=="0" Goto exitGOTO MENU:wifi_startset selcet=3clsECHO. =-=-=-=-=开启无线承载网络=-=-=-=-=echo.echo 1.检测 Internet访问set lost=falseFOR /F "usebackq tokens=1 delims= " %%i in ( `ping -n 2 www.baidu.com^|find "找不到主机"` ) do ( if %%i==Ping ( set lost=true ))if %lost%==true ( echo 无Internet访问,请连接Internet。 ping 127.0.0.1 -n 3 >nul 2>nul GOTO wifi_start)echo 2.检测 承载网络支持set Support=falseFOR /F "usebackq tokens=1,2,3 delims= " %%i in ( `netsh wlan show drivers ^| find "支持的承载网络"` ) do ( if "%%k"=="否" ( echo 发现一块无线网卡 不支持 “承载网络”! ) if "%%k"=="是" ( echo 发现一块无线网卡 支持 “承载网络”! set Support=true ))if Support==false ( pause && GOTO MENU)ECHO.echo 3.开启 必要服务FOR /D %%i in ( "iCSSvc" "ALG" "BFE" "MpsSvc" "LanmanServer" "LanmanWorkstation" "Browser" "Dhcp" "RpcLocator" "Dnscache" "FDResPub" "upnphost" "SSDPSRV" "lmhosts") do ( set "Adapter=%%i" sc config !Adapter! start= AUTO>nul sc start !Adapter!>nul):wan_config_autonetsh wlan stop hostednetwork>nulnetsh wlan set hostednetwork mode=disallow>nulping 127.0.0.1 -n 2 >nul 2>nulif %auto%==false goto wan_configecho 4.查询 Internet网络接口set WAN=""set lost=""set /a n=1:wan_config_auto_reFOR /D %%i in ( "PPP 适配器" "以太网适配器" "无线局域网适配器" ) do ( set "Adapter=%%i" if %%i=="PPP %适配器" ( FOR /F "usebackq tokens=2* delims= " %%j in (`ipconfig^|find !Adapter!`) do set "Adapter=%%k") else ( FOR /F "usebackq tokens=1* delims= " %%j in (`ipconfig^|find !Adapter!`) do set "Adapter=%%k") FOR /F "usebackq tokens=3 delims= " %%l in (`netsh interface ipv4 show address "!Adapter:~0,-1!"^|find "IP"`) do ( FOR /F "usebackq tokens=* delims=" %%m in (`ping -S %%l -n 1 www.baidu.com^|find "往返"`) do ( set "lost=%%m") if not !lost!=="" ( set WAN="!Adapter:~0,-1!" echo 发现:!Adapter:~0,-1! goto startap ) ))echo 第%n%次未找到if %WAN%=="" ( if %n%==4 ( set auto=false echo 没有找到联网的网络接口,请尝试手动指定。 ping 127.0.0.1 -n 3 >nul 2>nul GOTO wifi_start ) else ( set /a n=%n%+1 GOTO wan_config_auto_re )):wan_configecho 4.选择 Internet网络接口:echo 确认请输入:y,否则直接按 [Enter] 键。ECHO.:wan_config_reset WAN=""FOR /F "usebackq tokens=2* delims= " %%i in ( `ipconfig^|find "PPP 适配器"` ) do ( set WANt=%%j set /p a=是否选择 “!WANt:~0,-1!” : if !a!==y ( set WAN="!WANt:~0,-1!" goto startap ))FOR /F "usebackq tokens=1* delims= " %%i in ( `ipconfig^|find "以太网适配器"` ) do ( set WANt=%%j set /p a= 是否选择 “!WANt:~0,-1!” : if !a!==y ( set WAN="!WANt:~0,-1!" goto startap ))FOR /F "usebackq tokens=1* delims= " %%i in ( `ipconfig^|find "无线局域网适配器"` ) do ( set WANt=%%j set /p a= 是否选择 “!WANt:~0,-1!” : if !a!==y ( set WAN="!WANt:~0,-1!" goto startap ))if %WAN%=="" ( goto wan_config_re ):startapECHO.echo 5.启动 无线承载网络netsh wlan set hostednetwork mode=allow>nulnetsh wlan start hostednetwork>nul 2>nulif not "%errorlevel%"=="0" ( FOR /D %%i in ( "无线网络连接" "WLAN" ) do ( set "Adapter=%%i" echo 开启失败,尝试重置无线网卡,以便顺利开启热点。 FOR /F "usebackq tokens=1 delims=," %%i in ( `getmac /v /fo csv^|find !Adapter!` ) do ( netsh interface set interface %%i disabled>nul 2>nul netsh interface set interface %%i enabled>nul 2>nul ) ) goto wifi_start)echo 6.查询 Microsoft承载网络接口set LAN=""FOR /F "usebackq tokens=1 delims=," %%i in ( `getmac /v /fo csv^|find "Microsoft"` ) do ( set LAN=%%i)echo 发现:%LAN%ECHO.echo 7.设置 Internet连接共享: %WAN%---^>%LAN%netsh interface ip set address name=%LAN% source=DHCP>nulnetsh interface ip set dnsservers name=%LAN% source=DHCP>nulcscript /nologo %temp%/ICS.vbs "off"for /f "delims=" %%i in ('cscript /nologo %temp%/ICS.vbs %WAN% %LAN%') do echo %%iECHO.echo 8.验证 Internet连接共享echo 等待设置生效,大约10s后开始验证。ping 127.0.0.1 -n 10 >nul 2>nulset lost=""FOR /F "usebackq tokens=3 delims= " %%i in (`netsh interface ipv4 show address %LAN%^|find "IP"`) do ( FOR /F "usebackq tokens=* delims=" %%j in (`ping -S %%i www.baidu.com^|find "往返"`) do set "lost=%%j")if %lost%=="" ( echo Internet连接共享设置失败! ECHO. echo 尝试关闭无线承载网络,并再次开启。 echo 关闭ICS共享 cscript /nologo %temp%/ICS.vbs "off" ECHO. netsh wlan stop hostednetwork netsh wlan set hostednetwork mode=disallow goto wifi_start) else ( echo Internet连接共享设置成功!)ECHO.pauseGOTO MENU:wifi_statusclsset selcet=3ECHO. =-=-=-=-=无线承载网络状态=-=-=-=-=ECHO.echo 承载网络状态echo -----------------------netsh wlan show hostednetwork|find "模式"netsh wlan show hostednetwork|find " 状态"netsh wlan show hostednetwork|find " 客户端数"ECHO.echo 已连接客户端echo -----------------------set "ip=---------------"set "mac=-----------------"FOR /F "usebackq tokens=1-6 delims=: " %%a in ( `netsh wlan show hostednetwork ^| find "已经过身份验证"` ) do ( set "mac=%%a-%%b-%%c-%%d-%%e-%%f" FOR /F "usebackq tokens=1 delims=: " %%i in ( `ARP -A^|find "!mac!"` ) do ( set "ip=%%i" ))echo IP地址 MAC地址echo %ip% %mac%ECHO.ECHO.pauseGOTO MENU:wifi_stopclsset selcet=0ECHO. =-=-=-=-=关闭无线承载网络=-=-=-=-=ECHO.echo 关闭ICS共享cscript /nologo %temp%/ICS.vbs "off"ECHO.netsh wlan stop hostednetworknetsh wlan set hostednetwork mode=disallowpauseGOTO MENU:wifi_configclsset selcet=1ECHO. =-=-=-=-=配置无线承载网络=-=-=-=-=ECHO.echo 第一步:输入新SSID Enter结束echo.set /p SSID=请输入新SSID:if "%SSID:~1,1%"=="" echo 最少输入2位&goto beginecho.echo.echo 第二步:输入8位以上新密码 Enter结束echo.set /p pw=请输入密码(8-16位):if "%pw:~7,1%"=="" echo 最少输入8位&goto keyif "%pw:~16,1%" neq "" echo 超过16位了&goto keynetsh wlan set hostednetwork ssid=%SSID% key=%pw%pauseGOTO MENU:wifi_show_configclsset selcet=3ECHO. =-=-=-=-=无线承载网络设置=-=-=-=-=ECHO.echo 承载网络设置echo -----------------------netsh wlan show hostednetwork|find "名称"netsh wlan show hostednetwork setting=security|find "用户安全密钥 "netsh wlan show hostednetwork setting=security|find "身份验证"netsh wlan show hostednetwork|find "最多客户端数"ECHO.pauseGOTO MENU:ICSvbsif exist "%temp%/ICS.vbs" ( del /f /a /q "%temp%/ICS.vbs" )( echo '使用方法 echo 'cscript /nologo %%^~dp0/ics.vbs "本地连接" "无线网络连接 2" echo 'cscript /nologo %%^~dp0/ics.vbs "off" echo Option Explicit echo Dim ICSSC_DEFAULT,CONNECTION_PUBLIC,CONNECTION_PRIVATE,CONNECTION_ALL echo Dim NetSharingManager,PublicConnection, PrivateConnection,EveryConnectionCollection echo ICSSC_DEFAULT = 0 echo CONNECTION_PUBLIC = 0 '公有网络接口 echo CONNECTION_PRIVATE = 1 '私有网络接口 echo CONNECTION_ALL = 2 '全部网络接口 echo Dim objArgs echo Dim priv_con,publ_con,switch echo Dim Reinfo echo Main^(^) echo Wscript.quit echo '主函数 echo Function Main^(^) echo Dim bReturn echo bReturn = "false" echo Set objArgs = Wscript.Arguments echo If objArgs.Count = 2 Then echo publ_con = objArgs^(0^) echo priv_con = objArgs^(1^) echo switch = "on" echo ICSshare publ_con,priv_con,switch echo ElseIf objArgs.Count = 1 Then echo switch = objArgs^(0^) echo ICSshare bReturn,bReturn,switch echo End If echo Main = bReturn echo End Function echo Private Function ICSshare^(ByVal sPublic, ByVal sPrivate, ByVal bEnable^) echo On Error Resume Next echo Dim NetSharingManager,EveryConnectionCollection, Item, EveryConnection, objNCProps echo set NetSharingManager = Wscript.CreateObject^("HNetCfg.HNetShare.1"^) echo set EveryConnectionCollection = NetSharingManager.EnumEveryConnection echo for each Item in EveryConnectionCollection echo set EveryConnection = NetSharingManager.INetSharingConfigurationForINetConnection^(Item^) echo set objNCProps = NetSharingManager.NetConnectionProps^(Item^) echo If objNCProps.name = sPublic And bEnable = "on" Then echo EveryConnection.EnableSharing CONNECTION_PUBLIC echo WSH.echo " 已设置WAN接口:“" ^& objNCProps.name ^& "”" echo ElseIf objNCProps.name = sPrivate And bEnable = "on" Then echo EveryConnection.EnableSharing CONNECTION_PRIVATE echo WSH.echo " 已设置LAN接口:“" ^& objNCProps.name ^& "”" echo ElseIf bEnable = "on" Then echo EveryConnection.EnableSharing CONNECTION_ALL echo ElseIf bEnable = "off" Then echo EveryConnection.DisableSharing echo End If echo Next echo End Function)>%temp%/ICS.vbsGOTO MENU:Exitclsdel /f /a /q "%temp%/ICS.vbs"新闻热点
疑难解答