返回列表 发帖

[网络连接] [分享]热点助手0.7(预览版)--虚拟无线热点管理批处理

热点助手是用于管理虚拟无线热点(承载网络)的批处理程序,可以在安装了无线网卡的Windows 7或Windows 8操作系统上运行,帮助用户创建和管理虚拟无线热点。通过使用虚拟无线热点,可以将多个无线网络客户端(笔记本、智能手机等)连接到一起,组建小型的无线局域网。还可以通过共享计算机上的宽带连接,将多个设备接入互联网。欢迎各位提出建议!

使用指南:
主界面:
[attach]5973[/attach]

第一次使用,请先检测驱动程序是否支持热点,输入8然后按回车确认,程序将进行检测并报告结果:
[attach]5974[/attach]

如果检测结果不支持,那么请尝试更新驱动程序,或是系统补丁。如果显示支持,就可以开始设置无线热点了,可以使用自动设置功能进行热点的设置,也可以使用功能5、6来分别设置您喜欢的SSID和密码。
[attach]5975[/attach]

SSID和密码设置好后,就要进行网络共享的设置了,否则连接热点的设备是不能上网的。打开网络连接,然后找到创建出的热点(在Win7下通常是"无线网络连接 2或3",win8下通常是“本地连接* 11”),接着将能上网的连接(宽带连接或本地连接,视实际情况而定)共享给热点。共享的方法是右键点击要共享的连接,然后在共享中勾选“允许其他网络用户通过此计算机的Internet连接”,接着在下拉列表中选择无线网络连接 3,然后点击确定,这样网络共享就设置好了。
[attach]5977[/attach]

共享设置好后,热点(softAP是热点的SSID)就能上网了:
[attach]5978[/attach]

可以使用“显示客户端IP和物理地址”功能来了解有哪些设备连接了无线热点:
[attach]5979[/attach]

程序还提供一些预定功能,比如定时关机等,方便用户对热点进行管理:
[attach]5980[/attach]
[attach]5981[/attach]

代码:
@echo off & color 1F & title 热点助手0.7(预览版) --虚拟无线热点管理程序,适用于win7/win8
(rem 程序名称 :热点助手
rem 版本 :0.7 (预览版)
rem 完成时间 :2012年12月9日 20:52:19
rem 宏命令
  set "RESTARTAP=netsh wlan set hostednetwork mode=allow &netsh wlan start hostednetwork 1>nul 2>nul &ping 127.0.0.1 1>nul 2>nul &netsh wlan stop hostednetwork 1>nul 2>nul &netsh wlan start hostednetwork" &rem 重启热点
setlocal EnableExtensions &rem 启用命令处理器扩展
setlocal EnableDelayedExpansion &rem 启用延缓环境变量
)
rem 检查程序是否以管理员身份运行
bcdedit /enum active 1>nul 2>nul
if not "!errorlevel!"=="0" (
  color E0  &rem 设置警告背景及字体颜色,背景-淡黄 字体-黑色
  echo 警告:检测到您可能没有以管理员身份运行本程序,这将使得部分功能失效。
  echo 提示:以管理员身份运行程序的方法:右键点击程序,然后选择“以管理员身份运行”。
  set /p mainmenu=您想要继续运行程序吗?[Yes/No]^:
  if /i not "!mainmenu!"=="Yes" (goto End)
)
:Begin
cls
echo 提示:输入要进行的操作后的编号或字母,然后按回车键确认。
echo;
echo 自动设置并启动无线热点………………1 预定管理…………………………2
echo;
echo 开启无线热点……………………………3 关闭无线热点……………………4
echo;
echo 设置SSID…………………………………5 设置密码…………………………6
echo;
echo 显示客户端IP和物理地址………………7 检测驱动是否支持无线热点……8
echo;
echo 查看网络相关信息………………………9 打开帮助页面……………………h
echo;
echo 退出程序…………………………………0
echo;
set /p mainmenu=请选择:
cls
if "%mainmenu%"=="1" (
  echo 正在自动设置,这可能需要大约15秒的时间,请稍等……
  set "password=deepblue%random%"
  netsh wlan set hostednetwork ssid=softAP key=!password!
  %RESTARTAP%
  if "!errorlevel!"=="0" (
    echo 无线热点的SSID为:softAP
    echo 无线热点的密码为:!password!
    echo;
    echo 提示:如果忘记密码,请使用功能6重置密码。
  )
)
if "%mainmenu%"=="2" (
  echo 定时关闭计算机…………………1
  echo 取消定时关闭计算机……………2
  echo;
  echo 定时关闭无线热点………………3
  echo 取消定时关闭无线热点…………4
  echo;
  echo 开机时启动无线热点……………5
  echo 取消开机启动无线热点…………6
  echo;
  echo 退出回到主菜单…………………0
  echo;
  set /p submenu= 请选择^:
  cls
  if "!submenu!"=="1" (
    echo 您想要在多少分钟后关闭计算机?
    set /p shutdowntime=请输入:
    echo;
    set /a shutdowntime*=60 &rem 换算成分钟
    if not "!shutdowntime!"=="0" (
      shutdown -s -t !shutdowntime!
      set /a shutdowntime/=60
      if "!errorlevel!"=="0" echo 命令执行成功,计算机将在 !shutdowntime! 分钟后被关闭。
    ) else echo 无效的输入,有效值是大于0的整数
  )
  if "!submenu!"=="2" (
    echo 正在取消定时关闭计算机
    shutdown -a && echo 已成功取消定时关闭计算机。
  )
  if "!submenu!"=="3" (
    echo 您想在几点关闭无线热点?(0~23
    set /p shutdowntime= 请输入:
    if !shutdowntime! leq 9 set "shutdowntime=0!shutdowntime: =!" &rem 补齐两位并去掉空格,否则schtasks命令会报错
    set "shutdowntime=!shutdowntime!:00"
    echo;
    schtasks /create /sc daily /tn 定时关闭无线热点 /tr "cmd /q /c netsh wlan stop hostednetwork &schtasks /delete /tn 定时关闭无线热点 /f" /st !shutdowntime! /ru system /rl highest /f
    if "!errorlevel!"=="0" echo 命令执行成功,无线热点将在 !shutdowntime! 关闭。
  )
  if "!submenu!"=="4" (
    echo 正在取消定时关闭无线热点
    schtasks /delete /tn 定时关闭无线热点 /f
  )
  if "!submenu!"=="5" (
    echo 正创建开机时启动无线热点的任务
    schtasks /create /tn 开机时启动无线热点 /tr "cmd /q /c %RESTARTAP%" /sc onlogon  /ru system /rl highest /f
  )
  if "!submenu!"=="6" (
    echo 正在取消开机时启动无线热点
    schtasks /delete /tn 开机时启动无线热点 /f
  )
)
if "!mainmenu!"=="3" (
  echo 正在开启无线热点,这可能需要大约10秒的时间,请稍等……
  rem 经测试,开机后第一次启动热点时,连接可能出现问题,故等待一段时间后重启,以解决此问题
  %RESTARTAP%
)
if "%mainmenu%"=="4" (
  echo 正关闭无线热点,这可能需要大约5秒的时间,请稍等……
  netsh wlan stop hostednetwork &rem 关闭无线热点
  netsh wlan set hostednetwork mode=disallow &rem 禁用无线热点模式
)
if "%mainmenu%"=="5" (
  echo 提示:直接回车将设置为默认值 &echo;
  set "oldssid="
  set "newssid="
  for /f "skip=4 tokens=1* delims=:" %%i in ('netsh wlan show hostednetwork') do if "!oldssid!"=="" set "oldssid=%%j"
  echo 原SSID:!oldssid!
  set /p newssid=请输入新SSID:
  if "!newssid!"=="" set "newssid=softAP"
  netsh wlan set hostednetwork ssid=!newssid!
)
if "%mainmenu%"=="6" (
  echo 提示:密码至少为8位 &echo;
  set /p password=请输入新密码:
  netsh wlan set hostednetwork key=!password! 1>nul
  if "!errorlevel!"=="0" (echo 已成功更改密码) else echo 输入的密码有误
)
if "%mainmenu%"=="7" (
  rem 将热点信息保存到数组变量中
  set "n=0"
  for /f "skip=3 tokens=1* delims=:" %%i in ('netsh wlan show hostednetwork') do (
    set /a n+=1
    if !n! gtr 12 ( rem 12行之后为客户端信息
      set "apinfo[!n!]=%%i:%%j" &rem 客户端物理地址采用:分隔,故需要保存i
    ) else set "apinfo[!n!]=%%j"
  )
  echo 无线热点信息:
  if /i "!apinfo[1]!"=="" (echo   无线热点模式:不可用) else echo   无线热点模式:!apinfo[1]!
  if /i "!apinfo[8]!"=="" (echo   无线热点状态:不可用) else echo   无线热点状态:!apinfo[8]!
  if "!apinfo[1]!"==" 已启用" set "ismode=true" &set "apssid=!apinfo[2]!"
  if "!apinfo[8]!"==" 已启动" set "isstart=true"
  if /i "!isstart!"=="true" (
    set "apmac=!apinfo[9]!" &set "apmac=!apmac::=-!" &rem 获取热点物理地址,并将:转换为-
    for /f "tokens=1* delims=:" %%i in ('ipconfig /all') do (
      if /i "%%j"==" !apmac!" set "isap=true" &rem 已进入ap信息
      if /i "!isap!"=="true" (
        set "s=%%i"
        if /i "!s:~0,7!"=="   IPv4" (
          set "apip=%%j"
          set "isap=false" &rem 已离开ap信息
        )
      )
    )
    for /f "delims=(" %%i in ("!apip!") do set "apip=%%i" &rem 分离出ip地址
    echo   无线热点的SSID:!apssid!
    echo   无线热点的IP地址:!apip!
    echo   无线热点的物理地址:!apmac!
    echo - - - - - - &echo;
    echo 连接到无线热点上的客户端信息:
    set "sumclient=!apinfo[12]!"
    if !sumclient! gtr 0 (
      echo   客户端总数:!sumclient!
      echo   序号 类型 验证状态 物理地址            IP地址
      for /l %%i in (13,1,!n!) do (
        for /f "tokens=1,2 delims= " %%j in ("!apinfo[%%i]!") do (
          set "clientmac=%%j" &set "clientmac=!clientmac::=-!"
          set "clientstate=%%k"
        )
        for /f "tokens=1,3 delims= " %%i in ('arp -a -n !apip! ^| find /i "!clientmac!"') do (
          set "clientip=%%i"
          set "ipclass=%%j"
        )
        set /a s+=1
        echo   !s! !ipclass! !clientstate! !clientmac!   !clientip!
      )
    ) else echo   当前没有客户端连接到无线热点上
  )  else echo   未启动无线热点,SSID、IP及物理地址不可用 &echo   未启动无线热点,客户端信息不可用
  echo - - - - - -
)
if "%mainmenu%"=="8" (
  set "apmode=不支持"
  echo 驱动程序信息:
  for /f "delims=" %%i in ('netsh wlan show drivers') do (
    echo %%i
    if /i "%%i"=="    支持的承载网络  : 是" set "apmode=支持"
  )
  echo; &echo - - - - - -
  echo 检测结果: !apmode!
  echo     您当前的驱动程序!apmode!无线热点模式
)
if "%mainmenu%"=="9" (
  echo 提示:若相关信息过长,将在每显示一页后暂停,按空格键可继续查看下一页的信息。&echo;
  echo 查看承载网络的属性和状态(netsh wlan show hostednetwork) …………1&echo;
  echo 查看系统上的无线局域网接口的列表(netsh wlan show interfaces)……2&echo;
  echo 查看系统上的无线驱动程序属性(netsh wlan show drivers) ……………3&echo;
  echo 查看计算机上可见的无线网络列表(netsh wlan show networks)…………4&echo;
  echo 查看无线局域网的全局设置(netsh wlan show settings)…………………5&echo;
  echo 查看完整的无线设备和网络信息(netsh wlan show all) …………………6&echo;
  echo 查看Windows上的完整IP配置(ipconfig /all)………………………………7&echo;
  echo 退出回到主菜单………………0&echo;
  set /p submenu= 请选择:
  cls
  if "!submenu!"=="1" netsh wlan show hostednetwork | more
  if "!submenu!"=="2" netsh wlan show interfaces | more
  if "!submenu!"=="3" netsh wlan show drivers | more
  if "!submenu!"=="4" netsh wlan show networks | more
  if "!submenu!"=="5" netsh wlan show settings | more
  if "!submenu!"=="6" netsh wlan show all | more
  if "!submenu!"=="7" ipconfig /all | more
)
if /i "%mainmenu%"=="h" (
  start http://hi.baidu.com/_deepbluetears/archive/tag/热点助手
  echo 如果页面没有正常打开,请访问:
  echo http://hi.baidu.com/_deepbluetears/archive/tag/热点助手
)
if not "%mainmenu%"=="0" (
  if not "!submenu!"=="0" ( rem 子菜单选项不为0,则进行暂停
    echo; &echo ------ 按空格键返回主菜单 ------
    pause >nul
  )
  set "submenu="
  goto Begin
)
:End
color 07COPY
2

评分人数

    • cjiabing: 紧跟时代步伐,有创意,哪个试过了出来说说 ...PB + 6 技术 + 1
    • Batcher: 感谢分享PB + 10 技术 + 1

这个不错~
谢谢了~

TOP

返回列表