添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
跳到主要内容

批处理基础

  • 不要折腾 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] 该集表示以增量形式从开始到结束的一个数字序列。