前言
由于卤肉饭同学当前需要 利用账号密码来进行 拨号上网,然鹅每次都需要打开网络设置-拨号等界面,需要点击多次才能完成,实属麻烦,所以查阅资料后编写了个bat脚本来实现一键连接/断开
直接上bat文件内容
如下:
@echo off
for /f %%i in ('ipconfig ^| findstr PPP') do (
if ["%%i"]==["PPP"] ( rasdial /disconnect && echo ----------------------------------宽带已断开----------------------------------- && echo -------------------------------copyright:卤肉饭--------------------------------&& ping 127.0.0.1>nul &&exit)
)
RASDIAL "宽带连接" zhexiezhanghao zhexiemima
echo ----------------------------------宽带已连接-----------------------------------
echo -------------------------------copyright:卤肉饭--------------------------------
ping 127.0.0.1>nul
exit
rem v1.0.0 build 2021-06-30 22:56 by 卤肉饭
总结
思路:
通过判断ipconfig 命令的返回值中是否有ppp(即宽带拨号上网的网卡信息),来判断当前是否联网。
知识点:
1.cmd中的for命令
语法:For %%i in (Command1) doCommand2
- /f 文件解析,读文件,一次读一行
- %%i 是循环变量
- Command1是for里面的第一个参数,可以是一个或多个
- 把Command1赋值给%%i,然后执行Command2,直到所有的元素都执行一遍结束循环
2.转义符是^
3.Rasdial 是cmd自带命令
语法:rasdial ConnectionName [UserName [{Password | *}]]
参考的csnd资料 链接
cmd命令的参考资料
Rasdial 的参考资料
所遇问题:
- 我们常用创建bat方式是:先创建txt文档,然后改后缀名称。但要注意txt默认编码现在是utf-8,但cmd中识别的编码是ANSI,如果有汉字就会报错,需要把txt文件另存为转换一下。(大坑)
- bat文件中不可随意回车,会影响执行
- 吐槽~读取命令的返回值要用for循环(比较鸡肋)
- 另外里面的ping只是为了延时关闭窗口,另外也可以验证网络通断