批处理基础
- 不要折腾 Windows CMD 的 Batch file 了,系统切换语言后, 字符编码是最大的问题 ,并且,功能过于基础,组装成应用比较麻烦;
- 建议安装 Git 客户端,写基于 Bash 的脚本,适用性更强 (对工作帮助更大) ;或者 PowerShell。
前话
批处理,维基上是这么定义的:“在 DOS、OS/2、微软视窗系统中,是一种用来当成脚本语言运作程序的文件。它本身是文本文件,其中包含了一系列让具备命令行界面的解释器读取并运行的指令。它相当于是类 Unix 系统下的 Shell script。文件扩展名为
.bat
或
.cmd
,Shell 程序逐行运行命令”。
就是在命令行界面 (CLI) 执行指令,为的就是一个快,省事,偷懒,不依赖其它软件。
Windows 10, 8, 7, Vista 和 XP 中的命令称为‘CMD 命令’或‘命令提示符命令’,而 Windows 98/95 和 MS-DOS 中的命令则称为‘DOS 命令’。
本篇讲基础,后面的讲实际实用。
基础部分扫一两遍,旨在认识,不在熟悉。
-
.
当前目录 -
..
上一层目录 -
\
根目录
-
文件及目录路径:使用反斜杠
\
,不使用正斜杠/
- 文件及目录路径:存在空格,使用双引号包裹路径
-
不可用于文件目录名的字符:
\ / : * ? " < > |
-
需双引号包裹的字符:
( ) [ ] { } ^ = ; ! ' + , ` ~ & 空格
-
转义字符
^
-
需要转义的字符:
^
、<
、>
、|
、&
-
%%
自己可以转义自己 -
rem
(回显)和::
(不回显)注释语句 -
@
隐藏命令的回显 -
echo
不显示命令本身,只显示执行后结果 -
pause >nul
暂停,隐藏 pause 显示的信息
常用 DOS 命令
-
command /?
查看 command 命令帮助说明 -
cd/chdir /d [drive:][path]
-
md/mkdir [drive:][path]
-
rd/rmdir [/s] [/q] [drive:]path
删除子目录树/安静模式 -
copy /?
-
ren/rename /?
-
move /?
-
del/erase /?
-
attrib /?
-
tree /?
-
dir /?
-
find /?
-
findstr /?
-
sort /?
-
xcopy /?
-
type /?
-
more
逐屏显示输出 -
set
显示、设置或删除 cmd.exe 环境变量。/p
用户输入,/a
数学运算
建议 CMD
cd
到桌面以
help >> cli_help.txt
、
cd /? >> cd_help.txt
这类方式深入查阅相关命令说明。
if/else
语句
-
if exist
判断驱动器、文件或文件夹是否存在 -
if "字符串1"=="字符串2"
判断某两个字符串是否相等 -
if defined str
判断某个变量是否已经被赋值 -
if 数值1 equ 数值2
判断某两个数值是否相等+ `equ`, equal
+ `gtr`, greater than
+ `geq`, greater than or equal
+ `lss`, less than
+ `leq`, less than or equal
+ `neq`, no equal
for
语句
for %variable in(set) do command [command-parameters]
-
遍历目录(directory)
for /D %variable in(set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。 -
递归遍历
for /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:] path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 -
计数循环
for /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。