批处理学习笔记

本贴为批处理学习笔记。

别问为什么要学批处理,问就是爱折腾。

因为是折腾,所以学得很散很乱。

ECHO

主要用来显示一些东西。

输出文本
1
echo 文本
输出空行
1
2
3
4
5
6
echo.
echo,
echo:
echo;
echo\
echo/
开关回显
1
2
echo on
echo off
回复命令

这个后面再说。

PAUSE

暂停。

注释

REM
1
REM 这是条注释
::
1
:: 这也是条注释

在批处理文件中,单独一个以”:”为开头的行都被视作标签(后面会讲),并且标签后的所有内容均会被忽略。
但是,GOTO 命令只会识别有效标签,也就是冒号后面紧跟一个以字母或数字为开头的字符串。
所以冒号后面跟其他以非字母或数字开头的字符串都可以拿来做注释。

其他

如果你懒得一行一行打注释,你可以:

1
2
3
goto tag
这之间打注释。
:tag

@

这个符号叫命令行回显屏蔽符
功能就和名字一样。

1
@echo off

这样就能让 echo off 那条命令也不显示。

GOTO

这东西大概就是让你跳到标签处运行。
标签必须单独一行,并且以单独一个冒号开头,冒号后面紧跟一个以字母或数字为开头的字符串。
如下:

1
2
3
:tag
echo This is DUMBLOG.
GOTO tag

循环输出“This is DUMBLOG.”。

注意:

  1. GOTO必须和标签一一对应,否则会直接报错并退出。但是标签不一定要和GOTO一一对应,意思是可以有单独的标签存在,但不能有单独的GOTO存在。
  2. 标签名只能用常量,不能用变量。
  3. 若有标签重名,执行最顶上那个。

重定向符

将命令的输出写入到指定的文件或 nul 中(nul是空设备,相当于直接把输出文本屏蔽掉)。

>

“>” 会覆盖文件中已有的内容。

>>

“>>” 不会覆盖文件中原有内容,而是将文本直接加到指定文件最后面。

1
2
3
@echo 可以这样来打注释 > nul
ping dumblog.top > ping.txt
@echo 把 ping 命令的输出写到文件 ping.txt 中去 >> nul

一些设备名
  • con:控制台(键盘和显示器)
  • nul:空设备
  • clock$ 电子钟

重定向符可用于Debug:
“>nul”前的 1 表示输出流,2 表示错误流。

SET

SET的基础功能是用来显示、设置或删除 cmd.exe 环境变量。

语法:

1
set [v=[s]]

v 指定环境变量名;
s 指定要赋给变量的字符串。

显示

直接输入没有参数的环境变量。

1
set PATH

会显示环境变量 PATH 的值。

也可以:

1
set p

显示所有以 p 开头的环境变量。

参考: