BAT特殊字符
1. 点
与echo连用,作用是换行
示例1 [输出空行]
echo.
2 > 定向符[输出]
将命令的输出进行重定向 [一般用于将结果写入文件]
注意 nul 为空设备 >nul 则用于屏蔽输出内容 [如 pause>nul]
示例2 [向1.txt中写入字符串 wind]
echo wind>1.txt
3 >> 定向符[输出]
将命令的输出进行重定向 [一般用于将结果写入文件]
注意,定向到文件时,它是在末尾追加 > 则会覆盖
示例3 [向1.txt中追加写入字符串 wind]
echo wind>>1.txt
4 < 定向符[输入]
配合set /p 使用时,从指定的文件中获取字符串 赋值给变量
示例4 [将1.txt中第1行内容赋值给变量 wind]
set /p wind=<1.txt
5 & 连接符
连接两个命令
注意 不论前面的命令是否成功执行 后面的命令都将执行
示例5 [依次执行两个echo 命令]
echo wind& echo snow
6 && 连接符
连接两个命令
注意 仅当前面的命令成功执行时 后面的命令才会被执行
示例6 [echo 命令成功执行 type 命令也将被执行]
echo wind&& type 1.txt
示例7 [hello 命令执行失败 type 命令不会被执行]
hello&& type 1.txt
7 || 连接符
连接两个命令
注意 仅当前面的命令执行失败时 后面的命令才会被执行
示例8 [echo 命令成功执行 type 命令不会被执行]
echo wind|| type 1.txt
示例9 [hello 命令执行失败 type 命令将被执行]
hello|| type 1.txt
8 | 传递符
将前面命令的结果 传递给后面的命令使用 [一般用于查找]
示例10 [显示字符串wind 并 传递给find 查找 关键字 w]
echo wind| find "w"
2,6,7,8综合 示例11 [将字符串传递给find查找 并 输出查找结果]
echo wind| find "w">nul&& echo 找到字符w|| echo 未找到字符w
9 ^ 转义符 [脱字符]
脱去特殊符号的作用 使之成为一个纯粹的符号
示例12 [输出字符串 &&&&& ]
echo ^&^&^&^&^&
10 @ at
其作用相当于 echo off 不显示命令本身
不同之处是@仅处理单个命令 echo off则是全局的
示例13 [命令行不会显示]
@echo wind
11 % 百分号
两个百分号表示取值
示例14 [显示变量 wind 的值 smile]
set wind=smile
echo wind的值为 %wind%
注意,如果要输出一个百分号 则在批处理中要写成两个
12 * 星号
通配作用
示例15 [删除所有文本文件]
del *.txt
批处理中%cd%与%~dp0的区别
/*
* directory structure
* c:
* -c.bat
* -program
* -d.bat
*/
/* c.bat */
call "%cd%\program\d.bat"
/* d.bat */
@echo off
echo cd = %cd%
echo dp0 = %~dp0
直接运行d.bat,结果为
cd = C:\program
dp0 = C:\program\
直接运行c.bat,结果为
cd = C:\
dp0 = C:\program\
从上面的结果可以看出:
-
-
执行d.bat时,当前工作目录为d.bat所在目录;
-
执行c.bat时,当前工作目录为c.bat所在目录,即使在调用d.bat后,该工作目录依旧是c.bat所在目录。
-
问题总结
我们来重申下%~dp0和%cd%的区别,%cd%和%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同:
-
-
%cd%代表的是当前工作目录(current working directory,variable);
-
%~dp0代表的是当前批处理文件所在完整目录(the batch file’s directory,fixed)。
-
从目前我们的使用情况来看,尽量使用%~dp0,不建议使用%cd%,有其他需求除外
此随笔或为自己所写、或为转载于网络。仅用于个人收集及备忘。