- 语法
符号 | @ | 关闭当前行的回显 |
| | | 管道传输命令:前面命令输出结果作为后面命令的输入内容 |find |
| || | 前面命令执行失败的时候,才执行后面的命令 |
| & | 前面命令执行后,接着执行后面的命令 |
| && | 前面命令执行成功了,才执行后面的命令 |
| > | 传递并覆盖(将运行结果传递给后面的范围:文件/控制台) >nul |
| >> | 传递并在末尾追加 |
| ^ | 对特殊符号 > 、<、 &、的转义字符 |
| ; | 对同一个命令可以分割执行对象(还是每次执行一句) |
| nul | 空对象 |
注释 | rem xxx / :: xxx |
|
|
|
|
显示 | echo [on|off] | 设置是否打开显示每行指令 |
| echo [message] | 显示message |
| echo | 显示当前设置 |
|
|
|
跳转 | goto | 跳到标签 |
执行 | call :LabelName | 调用标签 / 脚本 |
| :LabelName | 标签 |
|
|
|
本地化 | SETLOCAL | set之后所做的环境改动仅限于批处理文件 |
| ENDLOCAL | 还原系统原来的环境变量 |
|
|
|
变量 | 命名:SET A=… 调用:%A% 本地变量:%0~%9 自带的变量 |
|
|
|
|
条件 | IF [NOT] DEFINED variable command | DEFINED 用来检测variable是否定义 |
| IF [NOT] ERRORLEVEL number command | 必须放在某个命令后面, ERRORLEVEL:命令执行完成后返回的退出值, Number 数字取值范围0~255 |
| IF CMDEXTVERSION number command | 变量是否已定义 |
| IF [/I] [NOT] item1==item2 command IF [/I] item1 compare-op item2 command IF [/I] item1 compare-op item2 (command) ELSE (command) | item为字符串,[/I]表示不区分大小写 item为数字时: compare-op取值范围: EQU : = NEQ : != LSS : < LEQ : <= GTR : > GEQ : >= |
| IF [NOT] EXIST filename command IF [NOT] EXIST filename (command) ELSE (command) |
|
|
|
|
循环 | 在cmd 窗口中:for 参数 "选项" %I in (command1) do command2 在批处理文件中:for 参数 "选项" %%I in (command1) do command2
*in 和do 之间的command1 表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔
*for /f "delims=, tokens=2,5" %%i in (test.txt) do echo %%i %%j
* for /f %%i in ('dir /a-d /b *test*.txt') do echo %%i
| *括号不能省略;空格不能省略 *for 后加的参数: 1)无参数,表示循环处理文件夹下的所有文件。 2)/R 表示递归到子文件夹。 3)/L 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。 4)/D 搜索目录或文件夹,但不会搜索文件,也不搜索子目录. 5)/F 从指定的文件中,以行为单位,读取数据作为变量,或从一个命令的输出中读取数据。
*其他的选项: 1)eol=c - 忽略以指定字符(c)开头的行(默认忽略;开头的行/仅可以指定一个字符) 2)skip=n - 跳过文件开始的n行 3)delims=分隔符集 - (切分字符串:默认提取切分后每一行的第一节内容 / 替换空格和跳格键的默认分隔符集) 4)tokens=x,y,m-n - 指定提取指定节的内容。
5)usebackq - 指定新语法已在下类情况中使用:
**(当路径中含有特殊字符的时候,应该使用引号把路径括起来) *command1: 1)形式:(文件名) 或 ('命令语句') 或 ("字符串")
<http://www.cnblogs.com/itech/archive/2009/04/15/1436409.html> |