2010qaqz111 发表于 2015-10-1 20:51:23

PE自动加载 WIFI 网络 SSID 和 PSWD 的脚本

本帖最后由 2010qaqz111 于 2015-12-19 11:24 编辑

批处理写的,要求系统没有砍掉ping.exe

请使用附件中的cmd脚本,不要直接复制粘贴此处的代码,论坛程序会把TAB字符替换为连续的空格,第33行分析SSID和PSWD的代码会受到影响!

@echo off

pushd %~dp0

set WIFITXT=wifilist.txt
set WIFIXML=%temp%\wifi.xml

::获取保存的WIFI列表
set FBINST=fbinstplus.exe
set UDPATH=
::当前目录有就直接用当前目录的
if exist "%WIFITXT%" goto:waitWlansvc
::否则尝试从UD区提取
for /f "usebackq" %%i in (`%FBINST% --hdlist "(hd%%N)" --ALL --ALL --UD`) do (
        %FBINST% %%i output "%UDPATH%%WIFITXT%" %%~nx
        if exist "%WIFITXT%" goto:waitWlansvc
)
::没找到
goto:end

::等待无线配置服务启动
:waitWlansvc
for /f "usebackq delims=" %%i in (`net start^|find "WLAN"`) do (
        echo Wlansvc Detected: [%%i]
        goto:WlansvcStarted
)
echo waiting Wlansvc start...
1>nul 2>nul ping 0.0.0.0 -n 5
goto:waitWlansvc
:WlansvcStarted

::添加WIFI网络
for /f "usebackq tokens=1,2 delims=        " %%i in ("%WIFITXT%") do (
::
::请注意上面一行delims=后面是一个TAB字符,不是一连串空格!!!
::这里的一连串空格是被论坛程序替换掉的,在编辑模式还是一个TAB字符,但是显示出来就变成一连串空格了。
::
        > %WIFIXML% echo ^<?xml version="1.0"?^>
        >>%WIFIXML% echo ^<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"^>
        >>%WIFIXML% echo         ^<name^>%%i^</name^>
        >>%WIFIXML% echo         ^<SSIDConfig^>
        >>%WIFIXML% echo                 ^<SSID^>
        >>%WIFIXML% echo                         ^<name^>%%i^</name^>
        >>%WIFIXML% echo                 ^</SSID^>
        >>%WIFIXML% echo         ^</SSIDConfig^>
        >>%WIFIXML% echo         ^<connectionType^>ESS^</connectionType^>
        >>%WIFIXML% echo         ^<connectionMode^>auto^</connectionMode^>
        >>%WIFIXML% echo         ^<autoSwitch^>false^</autoSwitch^>
        >>%WIFIXML% echo         ^<MSM^>
        >>%WIFIXML% echo                 ^<security^>
        >>%WIFIXML% echo                         ^<authEncryption^>
        >>%WIFIXML% echo                                 ^<authentication^>WPA2PSK^</authentication^>
        >>%WIFIXML% echo                                 ^<encryption^>AES^</encryption^>
        >>%WIFIXML% echo                                 ^<useOneX^>false^</useOneX^>
        >>%WIFIXML% echo                         ^</authEncryption^>
        >>%WIFIXML% echo                         ^<sharedKey^>
        >>%WIFIXML% echo                                 ^<keyType^>passPhrase^</keyType^>
        >>%WIFIXML% echo                                 ^<protected^>false^</protected^>
        >>%WIFIXML% echo                                 ^<keyMaterial^>%%j^</keyMaterial^>
        >>%WIFIXML% echo                         ^</sharedKey^>
        >>%WIFIXML% echo                 ^</security^>
        >>%WIFIXML% echo         ^</MSM^>
        >>%WIFIXML% echo ^</WLANProfile^>
        echo netsh wlan add profile filename=%WIFIXML%
        netsh wlan add profile filename=%WIFIXML%
        del %WIFIXML%
)

:end
popd

请使用附件中的cmd脚本,不要直接复制粘贴此处的代码,论坛程序会把TAB字符替换为连续的空格,第33行分析SSID和PSWD的代码会受到影响!

工作方式
从一个文本文件里面读 SSID 和 PSWD 来添加无线网络。
文本文件的文件名是【wifilist.txt】,明文,SSID和PSWD在同一行,TAB字符分隔。

wifilist.txt 的文件名可以自己修改,在第5行set WIFITXT=wifilist.txt


查找 wifilist.txt 的方式
1.脚本所在的目录有 wifilist.txt 就直接用。
2.否则尝试从UD分区提取。

第9行:set FBINST=fbinstplus.exe这是用来从ud区取数据文件的程序,我用的 fbinstplus,原帖在这里:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=187865
脚本默认 fbinstplus.exe 就在脚本所在目录,或者可以被 PATH 环境变量索引到。
如有需要,请自行修改这个程序的文件名和路径。

第10行:set UDPATH=这行设置 wifilist.txt 在 UD 的路径,可以自己修改。
注意路径分隔是正斜杠:【/】,并且应以正斜杠结尾,这样下面拼接的字串才会是正确的路径。
如:set UDPATH=WIFIDATA/下面的命令实际执行就会是这样(15行):fbinstplus.exe (hd0) output "WIFIDATA/wifilist.txt" %~nx

第14行:for /f "usebackq" %%i in (`%FBINST% --hdlist "(hd%%N)" --ALL --ALL --UD`) do (标注为红色的开关是检查所有磁盘,这个开关替换成【--REMOVABLE】可以排除本地硬盘。
关于命令的具体用法请参照 fbinstplus 的发布帖(链接在上面)。


目前我是用在C大的USBOS的两个8PE的RAMOS里,已经测试过可以使用没有问题。


脚本和 wifilist.txt 的样例我传一个到附件。

2010qaqz111 发表于 2015-10-1 20:51:34

本帖最后由 2010qaqz111 于 2015-10-1 22:27 编辑

之前有找过现有的 Vista/7/8/8.1/10 上的配置文件,以为可以直接拿来用,但是实际测试之后发现不行。

因为 Windows 对 wifi profile 的加密是跟当前系统有关的,换了系统(系统的版本不同、硬件不同等等)
就解密不了,所以直接使用硬盘上原有系统内的 xml 文件来导入不行。

现在这个方案其实还只是个半成品,因为修改更新 wifilist.txt 的机制现在还没有,只能全部自己手动来做。
适用场景比较多的是在固定地点用同个U盘启动不同的机器,比如电脑城门店上装机,维修点门店等。



这个脚本可以放在 WIM 里面用,也可以放在 PETOOLS 外置里面用,系统启动后手动执行也可以。

wifilist.txt 的样例在顶楼附件。

pseudo 发表于 2015-10-1 22:08:49

谢谢分享
请给个wifilist.txt例子

2010qaqz111 发表于 2015-10-1 22:14:42

本帖最后由 2010qaqz111 于 2015-10-1 23:14 编辑

pseudo 发表于 2015-10-1 22:08
谢谢分享
请给个wifilist.txt例子

我传一个到附件吧

879792799 发表于 2015-11-7 17:12:01

谢谢分享

879792799 发表于 2015-11-7 17:12:01

谢谢分享

tzxinqing 发表于 2015-12-17 15:13:16

谢谢楼主分享,也谢谢P大的修改

tzxinqing 发表于 2015-12-18 16:46:58

pseudo 发表于 2015-12-16 22:48
我签名里新上传的boot.wim内petools文件夹有一个供参考。

P大,失败了

'ou.net' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'tid' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'extra' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'wifilist.txt' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'xml' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'募?if' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
文件名、目录名或卷标语法不正确。
'/f' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Wlansvc Detected: [%i]
'加WIFI网络' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
命令语法不正确。

C:\DYY8\81PE\DRIVERPACKS>

2010qaqz111 发表于 2015-12-19 11:21:55

请使用顶楼附件中的cmd脚本,不要直接复制粘贴顶楼的代码,论坛程序会把TAB字符替换为连续的空格,第33行分析SSID和PSWD的代码会受到影响。

之前发帖的时候没有注意到显示出来TAB会变空格,编辑模式下确实是TAB字符,现在也还是,但是显示出来就变空格了。

这点区别虽然大部分情况下脚本也可以工作,但是遇到SSID或者PSWD里面有空格的情况就会出问题,所以最初使用delims=TAB是考虑了有空格的SSID和PSWD这种情况的。

czvo 发表于 2019-10-30 08:16:34

很强大,正需要

zlxxn123 发表于 2019-11-1 18:28:17

最近想玩PE,学习一下,谢谢

同一天 发表于 2019-12-20 07:45:14

页: [1]
查看完整版本: PE自动加载 WIFI 网络 SSID 和 PSWD 的脚本