定义
维基百科中批处理的解释是:
批处理文件(英语:Batch file),又称批次档,在DOS、OS/2、微软视窗系统中,是一种用来当成脚本语言运作程序的文件。它本身是文本文件,其中包含了一系列让具备命令行界面的解释器读取并执行的指令。它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。它相当于是类Unix系统下的Shell script
简单来说 批处理就是包含一行或多行的"可执行"文本文件(后缀通常是 .bat
, .cmd
), 本文记录了笔者在使用批处理过程出现的 BUG 语法错误, 以示警醒
语法
批处理的语法, 着实让人… 算了, 这是不看文档的锅…
1 | ## 此为注释, 脚本不执行 |
特别提醒: ##
并不是批处理的注释符, 批处理注释符为 ::
或使用 @REM
纠错
适应了其他编程语言, 再去接触批处理的语法格式. 难免会出现一些不可避免的语法错误
## 错误的定义: 命令中有空格, 可能会导致引用错误
set FileName = public.zip ×
set FileName=public.zip √
## 截取时间: %Date%
%Time%
## 当时间为"个位数"的时候, 截取的值为 ' 0' 而不是 '00' , 可能会导致引用变量的该行命令语法错误
参数说明:
%Date%
%Time%
: 当前系统日期&&时间 (根据时区语言格式设置不同, 输出也有所不同)%date:~8,2
: 在输出的结果, 从第8位开始, 取2位%time:~0.2
: 在输出的结果, 从第0位开始, 取2位%datetime: =0\%
: 将变量 datetime 中的 ' ' 替换为 '0'- " # " 开头为执行命令
- " > " 开头为输出结果
# echo %Date% %Time%
> 20/03/2022 00:37:10.68
# set datetime=%date:~8,2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%
# echo %datetime%
> 20220320_ 03710
# move public.zip public_%datetime%.zip
> The syntax of the command is incorrect.
# set datetime=%date:~8,2%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%
# set reformatDate=%datetime: =0%
# echo %reformatDate%
> 20220320_003710
# move public.zip public_%reformatDate%.zip
> 1 file(s) moved.
在重新格式化
datetime
后, 成功执行了重命名.zip
文件的操作
实践
附上两个批处理脚本(.bat)文件内容, 仅供学习参考
如使用 记事本 新建 .bat
文件, 请设置文本编码为 ANSI
, 用 Visual Studio Code 则建议设置编码格式为 GBK
测试目录结构
.\BatchTest
├─ logs
│ └─ ...
├─ public
│ └─ ...
├─ _old_public
│ └─ ...
├─ CallRDeployment.bat
├─ public.zip
└─ RapidDeployment.bat
RapidDeployment.bat
1 | @echo off |
CallRDeployment.bat
1 | ## 调用 RapidDeployment.bat , 并输出日志 |
特别提醒: ##
并不是批处理的注释符, 批处理注释符为 ::
或使用 @REM
题外
Windows 自定义快速启动 (运行) 命令
测试环境目录 (E:\BatchTest)
.\BatchTest
├─ CallRDeployment.bat
├─ Dual WeChat.bat
├─ RapidDeployment.bat
└─ ...
打开控制面板, 搜索 环境变量, 将 E:\BatchTest
添加到 系统环境变量 的 Path
项目下 (图略)
再次键入 Win + R 唤出 运行 窗口, 键入 CallRDeployment
或 "Dual WeChat"
或 RapidDeployment
即可实现自定义 快速启动 CMD命令, 文件名 为自定义CMD命令, 自定义命令在CMD/PowerShell窗口同样适用
* 请根据实际情况将存放脚本文件的目录路径添加到 Path
下