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

参考资料

bat echo 每行不同的颜色

posted @   瓶子的跋涉  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示