费曼学习法最重要的部分,即把知识教给一个完全不懂的孩子——或者小白。
为了更好的自我学习,也为了让第一次接触某个知识范畴的同学快速入门,我会把我的学习笔记整理成电子幽灵系列。
提示:作为低代码工具的笔记,这里会用特殊字体表示要用到的函数等等。请若要学习,请结合相关工具边用边学。
本篇笔记通过对各种资料学习总结得到。
BAT脚本是主要用于Windows操作系统中的一种批处理脚本。所谓"批处理",就是一次性处理一批指令。这些命令通常是可以在命令提示符(cmd)中手动输入的,但通过将它们编写成一个脚本文件,可以实现自动化操作,大大提高工作效率。BAT脚本文件的扩展名为 .bat
,用户可以通过双击这个文件来运行其中的所有命令。
BAT脚本可以用来管理文件和文件夹、运行其他程序、网络配置等任务。它支持变量、条件判断、循环等功能,使得脚本编写更加灵活和强大。然而,BAT脚本也有其局限性,比如错误处理能力较差,编写复杂的脚本时可能会比较困难。
需要注意的是,虽然BAT脚本在自动化任务方面很有用,但由于其执行的命令可能具有很高的权限,因此编写和使用BAT脚本时需要谨慎,避免执行到恶意代码或命令,造成不必要的损失。
编写BAT脚本主要是在Windows操作系统中进行的。编写BAT脚本有很多种方法,这里不妨列出一些:
记事本 :Windows自带的记事本可以用来编写和保存BAT脚本文件。编写完成后,只需将文件保存为 .bat
格式即可。这种方式简单直接,很多新手在第一次接触BAT脚本时就是使用这种方式编写简单的BAT脚本代码。
但是简单直接有时意味着简陋。每次编写,都需要转换文件格式,并(有时会)处理一些繁琐的报错。而且你无法得知自己写出的脚本是否存在某些问题,会带来不必要的风险。大批量的脚本编写不应当直接使用记事本。
Notepad++ :这是一个更强大的文本编辑器,支持多种编程语言的语法高亮和代码折叠等功能,可以更方便地编写BAT脚本。Notepad++是一个免费的开源软件,可以在其官方网站下载。
Visual Studio Code :VSCode里面当然有支持BAT编写的插件啦。在VSCode里面,就可以无视 .bat
格式,直接撰写脚本。bat-snippets插件可以帮助你快速插入常用的BAT代码片段,Bash Debug插件可以帮助你调试BAT脚本。其他的AI代码补全也可以帮你写作。
PowerShell ISE :如果你打算编写更复杂的脚本,PowerShell可能是一个更合适的选择。PowerShell ISE(集成脚本环境)是Windows自带的脚本编辑器,专门为PowerShell脚本设计,支持语法高亮、调试等功能。
Bat To Exe Converter :这个工具可以帮助你将BAT脚本转换为可执行文件(.exe)。它是一个免费的软件,可以将BAT脚本转换为标准的可执行文件,并且提供了一些附加选项,如隐藏源代码、设置图标等。
我使用的是VSCode编写。一是平时写代码就用VSCode,二是VSCode插件很多,几乎一体化,也可以帮助我写BAT脚本。
按编译和解释分类,现代的编程语言可以分为编译性语言和解释性语言。编译型语言需要编译器翻译成二进制机器码然后才能运行,而解释型语言由解释器逐行解释执行,不需要预编译。BAT就是一种解释型脚本语言,这一点它与Python十分相似。
.bat
文件中的命令结构与直接在命令提示符中输入的命令类似:
command [options] [arguments]
BAT只支持逐行注释。共有两种 ::
和 rem
:: 这行代码被注释掉了,它不会被终端回显
rem 这行代码也被注释掉了,但是如果打开了回显,他会显示在命令行终端上
变量定义时不需要声明类型,直接赋值即可:
set MY_VAR=Hello, World!
注意事项: 在给变量赋值时,变量名和等号间绝对不可以有空格,这样会导致赋值失败;因此,变量名里也绝不可以有 =
。
使用 %
符号引用变量:
echo %MY_VAR%
echo %PATH%::是的,环境变量也可以使用相同的引用方式
当给一个变量赋值为字符串时,我们并不需要把字符串两侧都加上引号。
set GREETING=Hello
set NAME=World
echo %GREETING%, %NAME%!
set Unint=%GREETING% %NAME%
echo %Unint%
在上面的例子当中,两次echo输出的结果是相同的。
用set命令进行字符串替换的格式如下:%变量名:待替换字符=替换后字符%
如果替换后字符为空(即等号后直接跟 %
),则可以删除子字符串。
如果待替换字符有多个,会全部替换。
例子:
set var=Hello, World!
set var=%var:World=Universe%
echo %var%
输出:
Hello, Universe!
批处理脚本本身不直接支持复杂的数学运算(如浮点数运算),但可以通过一些方法进行基本的整数运算。
使用 set /a
进行算术运算
set a=123
set b=456
set c=%a%+%b%
echo %c%
set /a c=a+b
echo %c%
输出:
123+456::变量默认以字符串的形式储存,当没有额外参数时,变量之间的运算默认采取字符串方式运算。
579
支持的运算符
+
:加法-
:减法*
:乘法/
:除法(整数除法)%
:取模(余数)&
:按位与|
:按位或^
:按位异或!
:按位非<<
:左移>>
:右移示例
以下是一些使用 set /a
进行整数运算的示例:
set /a a=123+456
set /a b=123-456
set /a c=123*456
set /a d=123/45
set /a e=123%45
echo %a%
echo %b%
echo %c%
echo %d%
echo %e%
输出:
579
33
56088
2
33
注意事项:
set /a
只能进行整数运算。calc.exe
或 powershell
)来实现。set /a
命令来实现类似的效果。所以,bat本身支持的运算不多,但是可以使用外部工具进行浮点数运算。
例如,可以通过调用 PowerShell 来进行浮点数运算:
@echo off
set a=123.45
set b=45.67
powershell -Command "$a = %a%; $b = %b%; $c = $a + $b; Write-Output $c"
输出:
169.12
dir # 列出目录内容
cd # 更改目录
mkdir # 创建目录
rmdir # 删除目录
del # 删除文件
copy # 复制文件或目录
move # 移动或重命名文件或目录
type # 显示文件内容
以下是这些命令的用法及其执行后的效果:
dir
dir
cd
cd 路径\到\目录
C:\Users\你的用户名
,输入 cd C:\Program Files
后,当前目录将变为 C:\Program Files
。mkdir
mkdir 新目录名
rmdir
rmdir 空目录名
del
del 文件名.txt
copy
copy 源文件.txt 目标路径\
move
move 旧文件名.txt 新路径\新文件名.txt
type
type 文件名.txt
打印文本
echo 你好,世界!
显示变量的值
set 变量名=值
echo %变量名%
echo %变量名%
命令会输出该变量的值。输入文件
echo 这是文件内容 > 文件名.txt
echo 这是追加的内容 >> 文件名.txt
if condition (
commands
)
例如:
if "%MY_VAR%"=="Hello, World!" (
echo 变量匹配
)
==
:等于(字符串比较)!=
:不等于(字符串比较)EQU
:等于(整数比较)NEQ
:不等于(整数比较)LSS
:小于(整数比较)LEQ
:小于等于(整数比较)GTR
:大于(整数比较)GEQ
:大于等于(整数比较)EXIST
:文件存在NOT EXIST
:文件不存在&&
和 ||
&&
:前一个命令成功时执行后一个命令。||
:前一个命令失败时执行后一个命令。dir file.txt && echo 文件存在 || echo 文件不存在
for %%var in (list) do (::这里的%%var表示变量名,这个用法只能且必须用在循环变量中。
commands
)
例如:
for %%i in (1 2 3 4 5) do (
echo 循环变量 i 是 %%i
)
.bat
文件本身不直接支持 while
循环,但可以通过 goto
和 if
语句模拟:
@echo off
set count=1
:loop
if %count% leq 5 (
echo 计数器是 %count%
set /a count+=1
goto loop
)
编写完 .bat
文件后,可以直接在命令提示符中运行:
script.bat
script::bat文件的特权:当运行它的时候,不需要加上它的后缀。
BAT脚本语言是以各种bash命令为主导的,和其他编程语言有着类似的功能,如支持条件分支、循环遍历、变量与运算等等;也有他自己的独特之处,即主要组织各种文件及其内容。下一篇笔记中将会涉及更多有关组织多个文件的BAT脚本用法。
如果真有所谓运势,那大概是吸收天地灵气得到的一些Buff?