批处理自建热点已经有很多教程了,但是都没有查看已连接IP的功能,最多也就是通过show hostednetwork查看连接数量和mac地址,我这里通过 arp -a 命令和 find 命令匹配mac查找出已连接的ip地址。
上代码
@ECHO OFF&PUSHD %~DP0 &TITLE 开启关闭热点
mode con cols=50 lines=32
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
setlocal enabledelayedexpansion
color 3F
:menu
cls
netsh wlan show hostednetwork
echo ======================================
echo.
echo 热点设置
echo --------
echo.
echo 输入1,开启热点
echo 输入2,关闭热点
echo 输入0,设置热点
echo 输入9,查看相关
echo 输入3,退出
echo.
echo ======================================
choice /c 012349 /t 10 /d 4 /n /m 输入选择
if %errorlevel%==1 goto sc_set
if %errorlevel%==2 goto sc_ip1
if %errorlevel%==3 goto sc_ip2
if %errorlevel%==4 goto sc_exit
if %errorlevel%==5 goto menu
if %errorlevel%==6 goto sc_key
::errorlevel是第几个选项
::choice /t 1 /d y /n>nul 延时1秒
:sc_exit
exit
goto :eof
:sc_key
cls
netsh wlan show hostednetwork setting=security
echo 已连接情况:
for /f %%a in ('netsh wlan show hostednetwork ^|find "已经过身份验证"') do (
set val0=%%a & arp -a |find "!val0::=-!")
echo.
pause
goto menu
:sc_set
cls
echo.
set /p mode= 启用状态:是(1)/否(2):
if %mode% equ 1 goto sc_setalo
if %mode% equ 2 goto sc_setdis
goto menu
:sc_setalo
echo.
netsh wlan set hostednetwork mode=allow
set /p ssid= 输入ssid:
netsh wlan set hostednetwork ssid=%ssid%
set /p key= 输入密码:
netsh wlan set hostednetwork key=%key%
pause
goto menu
:sc_setdis
netsh wlan set hostednetwork mode=disallow
goto menu
:sc_ip1
cls
echo.
netsh wlan start hostednetwork
pause
goto menu
:sc_ip2
cls
echo.
netsh wlan stop hostednetwork
pause
goto menu
前面vbs相关语句是为了以管理员身份运行
中间find语句在arp列表中查找“已经过身份验证”字符来匹配已连接的ip