相关文章推荐
温文尔雅的豆腐  ·  vue ...·  3 月前    · 


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%,有其他需求除外


此随笔或为自己所写、或为转载于网络。仅用于个人收集及备忘。