吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2758|回复: 23
收起左侧

[其他转载] 小学生日记 bat

  [复制链接]
djwdj 发表于 2022-8-3 22:48
本帖最后由 djwdj 于 2022-8-4 12:51 编辑

由于每次访问仓库,都要接入学校内网,手动开启步骤有点长。作为小学生,不能累坏了。所以决定搞个脚本
开始搞:

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable

首先找到这个开关,得知0关1开

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f 

这个就是脚本一键开启

看到有大佬写了一个自动切换脚本,但是我喜欢半自动,所以加了一个pause。每次打开先显示状态,不用就直接关闭。
直接看有点不显眼。所以搞变色

color /?
设置默认的控制台前景和背景颜色。

COLOR [attr]

  attr        指定控制台输出的颜色属性。

颜色属性由两个十六进制数字指定 -- 第一个
对应于背景,第二个对应于前景。每个数字
可以为以下任何值:

    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

这个是全局,我要突出一个状态就行。于是找到findstr 。这东西也不是很好用,没有linux那么直接。
变色的只有文件名,
输出的有:[文件名]:[文件内容]
多余的文件内容和冒号要去掉,看到大佬的方案prompt $H获得[退格][空格][退格]

SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)

大概的思路就是文件内容是退格,就把冒号退掉。这样只剩变色的名字。
就为了提取退格,要写这么多,还要开启延时。小学生哪记得那么多啊,咱们直接点:ALT+08。直接打出退格字符。在记事本上显示一个正方框,在文本编辑器中显示的是一个黑块里面有BS。按住ALT再按08就可以松开ALT。苹果键盘option是ALT
发现两个问题:
1、少按一个零也不行,要两位数以上才生效,所以要在前面补零。
2、字母上面的数字无效,要小键盘的。

轻薄本没有小键盘,这也太痛苦了,那就用上面大佬的脚本改

SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set /p ".=%%a" > BS.txt
)

这样就生成一个有退格字符的文本:[退格][空格][退格]

先上脚本再解释:

exit
:se
pushd %tmp%
set /p=  <nul>%2
findstr /a:%1 .* %2*
del %2
exit /b

上面内容直接加到写好的脚本尾部,然后调用就行了
两个实验:
1、写一个退格到文件内容,如果后面有echo.遇到echo 的换行,冒号就出来了
2、写两个退格到文件内容,冒号也出来了。大概是退格把退格给退格了。
总结:不和echo一起的时候可以只写一个退格。常态还是写[退格][空格][退格]

一个事故:因为有del 给****变色的时候,把所有文件都删除了。想起 一年级的时候用rm -rf /
解决:pushd %tmp%把工作目录切换到临时文件

@echo off
for /f "tokens=1,2,* " %%i in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ^| find /i "ProxyEnable"') do (set /A ProxyEnableValue=%%k)
if %ProxyEnableValue% equ 0 (
set s0=关闭
set s1=开启
set k=1
)else if %ProxyEnableValue% equ 1 (
set s0=开启
set s1=关闭
set k=0
)
set #="++++++"
echo 系统代 理目前状态处于:
::echo %s0%
call:se cf %#%
echo.
call:se cf %s0%
echo.
call:se cf %#%   
echo.
echo 按任意键%s1%代 理
pause>nul
echo 正在%s1%代 理,请稍候...
    echo=
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d %k% /f 
    echo 系统代 理已%s1%,请按任意键关闭本窗口...

pause>nul

exit
:se
pushd %tmp%
set /p=  <nul>%2
findstr /a:%1 .* %2*
del %2
exit /b

日记补充:

解读下面这行

for /f "tokens=1,2,* " %%i in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ^| find /i "ProxyEnable"') do (set 

首先注册表查询得到的结果

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
ProxyEnable    REG_DWORD    0x0

用find匹配到有数据的一行, 去掉注册表路径了

ProxyEnable    REG_DWORD    0x0

for /f来分割数据%i获得第一个数据%j第二个%k第三个
刚好我们需要的是第三个,所以使用%k

一个故事
昨天把else 后面的if删掉了之后,脚本就错了。然后想着,那么复杂的事情不是小学生该想的。
今天又想了想,就两个条件,还用一个else if,这也太费了。最后决定研究一下其他大佬的文章。找了很多也没找到这个问题。还没确诊怎么下药,先cmd 再bat,就找到病因了。原来是else不能连着括号,在java上习惯了else贴着大括号。
同时整理一下,大佬们写的要点

if 语句与左括号 ( 同行
else语句与右括号 ) 同行
右括号 ) 不与 else if 同行, 右括号 ) 后面加上续行操作符 ^
else语句与左括号 (不能贴着,要有空格
单行if else 可以不用括号,由于 del 命令需要用新的一行终止,del必须用括号

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
HUAJIEN + 1 + 1 我很赞同!
lcg2014 + 1 + 1 cmd颜色很不好玩

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
yulinsoft 发表于 2022-8-4 08:53
提示: 作者被禁止或删除 内容自动屏蔽
cick 发表于 2022-8-4 09:55
我本地用vpn也想搞成一键 不惧怕密集的桌面还是放弃了  桌面东西太多 用启动器 加载大多数应用了
HUAJIEN 发表于 2022-8-3 23:33
头像被屏蔽
tl;dr 发表于 2022-8-4 06:26
提示: 作者被禁止或删除 内容自动屏蔽
lizooo 发表于 2022-8-4 08:21
幼儿园喂奶班的表示看不懂
Incoparab 发表于 2022-8-4 08:54
我是小学生,快教我学这个
MI20220721 发表于 2022-8-4 09:04
这个是成品还是半成品,不太懂,学习中!
0xchang 发表于 2022-8-4 09:09
学习学习
lorzl 发表于 2022-8-4 09:29
胎儿觉得这晦涩难懂!
头像被屏蔽
hqnnqh 发表于 2022-8-4 09:32
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表