windows脚本语言bat
windows脚本语言
::开始语句
@echo off
DIY某些字体颜色
- 请将如下 代码的
头部
和尾部
分别放到自身代码
的头部
和尾部
- 自身的代码 在
:start
和 第一行goto:eof
之间- 最好使用
双引号
把内容括起来,不然遇到空格
就会报拒绝访问
的错误,内容如果包含特殊字符
(例如:"a:!aa" 等等,一般是win不允许我们用来命名文件的符号),也可能导致报错
,或者字符不显示
,所以最好不要使用特殊字符
,这个会在当前目录生成一个临时文件
,以你的内容为命名,如果包含了那些字符,就会产生那些文件,最好不删除,需要自己手动删除。- 关于颜色,有背景色和字体色,第一个数字代表背景色,第二个数字代表字体色,至于颜色值,在
cmd
中输入color /?
查看
:: DIY颜色
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"
)
rem echo say the name of the colors, don't read
:start
:: 自己代码实现部分
:: 实现颜色DIY代码
goto :eof
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
代码解释
:
SETLOCAL EnableDelayedExpansion
启动
输出数据域不换行与输出颜色应用
echo
默认输出的数据会自动换行
单独换行不显示
内容使用echo.
(注意 :点 要和 echo中间没有空格)
echo 单独一行数据
:: 单独一行数据呈现 呈现数据不换行
echo|set /p=Check BIOS Image :
:: 输出颜色为 红色 接着上方不换行内容
call :ColorText 0C "BASEBOARD ID Not Match"
:: 换行操作
echo.
- 颜色背景 如下
0 = 黑色
1 = 蓝色
2 = 绿色
3 = 浅绿色
4 = 红色
5 = 紫色
6 = 黄色
7 = 白色
8 = 灰色
9 = 浅蓝色
A = 浅绿色
B = 浅青色
C = 浅红色
D = 浅紫色
E = 浅黄色
F = 亮白色
判断文件是否存在
not exist
:文件不存在
exist
文件存在
if not exist "FPTW64.exe" (
echo|set /p=Check BIOS Image :
call :ColorText 0C "FPTW64.exe Not Exit"
echo.
goto :ERROR
)
定义变量
- 定义变量 : 如下为 定义
当前所在
的文件夹
set "CURRENT_DIR=%cd%"
判断变量是否定义
if defined SysProductNameFromWMIC (
::echo The Product Name of this baseboard is: %SysProductNameFromWMIC%
echo Get Rom Layout from Rom : PASS
) else (
::echo Get Rom Layout from Rom : FAIL
echo|set /p=Get Rom Layout from Rom :
call :ColorText 0C " FAIL"
echo.
::echo BIOS Product Name could not be extracted from the system's baseboard. Please check the system's DMI information.
goto :ERROR
)
匹配文件寻找第三个数据
获取到
版本信息
之后,要读取BIN文件
中的DMI信息
读取对应的文件,
循环数据
,如果是第三个数据
则设置变量
并退出
:: 获取 BIN 文件当中的 BIOS版本 信息
AMIBCPWin64.exe %BIOSFLASHFILENAME% BIOS.txt /O /DMI >nul 2>&1
setlocal enabledelayedexpansion
set count=0
for /f "delims=" %%i in ('find "02." BIOS.txt') do (
set /a count+=1
if !count! equ 3 (
set BIOSProductNameFromAMIBCP=%%i
goto :end
)
)
:end
BIOS.txt
文件中的部分信息
TEXTSTRINGS
01."O.E.M"
02."RB-F217-H310"
03."RBH310108B02"
04."Default string"
05."Default string"
06."Default string"
ENDTEXTSTRINGS
申请管理员权限
当到
文件开头
即可
:: 申请管理员权限
::echo Application administrator is being applied......
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
设置编码
:: 设置 cmd 使用 UTF-8 编码(避免中文乱码)
chcp 65001 >nul 2>&1
匹配当前文件夹内的BIN结尾文件
:: 获取当前文件夹
set "CURRENT_DIR=%cd%"
:: 查找当前文件夹下的 .BIN 文件,并将文件名赋值给变量
for %%f in ("%CURRENT_DIR%\*.BIN") do (
set "BIOSFLASHFILENAME=%%~nxf"
)
if not defined BIOSFLASHFILENAME (
echo|set /p=Get Rom Layout from File :
call :ColorText 0C "BIOS BI File Not Exit"
echo.
goto :ERROR
)
降低系统UAC等级
使用
win11
测试不重启电脑
也能生效
@echo off
:: 降低 UAC 到最低级别
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 0 /f
echo UAC 已设置为最低级别,请重启计算机。
pause
获取系统UAC等级
使用
win11
测试不重启电脑也能生效
@echo off
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 5 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 1 /f
echo UAC 已恢复默认设置,请重启计算机。
pause
bat脚本执行完毕之后进入cmd命令行
- 进入命令行之后 会默认有提示版本信息等内容
:: 这样指令cmd 会有版本微软的提示信息
cmd
:: 不让其有提示信息
cmd /k