在 Windows 中,一个保存了 Dos 命令并以 .bat
作为文件扩展名的文本文件就可以称为批处理脚本,比如有 test1.bat
文件内容如下:
echo 1
echo 2
echo 3
pause
pause
命令可以阻止命令继续执行,以防止窗口一闪而过。。其执行效果如下:
可以看到其实就相当于我们顺序手动执行了多条命令。
屏蔽命令回显
可以通过 @echo off
屏蔽命令的回显而仅保存输出结果,在脚本头部添加上 @echo off
后脚本如下:
@echo off
echo 1
echo 2
echo 3
pause
执行效果如下:
从终端接收变量值
有时候我们的变量值需要用户交互指定,此时就可以通过下面语法来从终端接收变量值:
@echo off
set /p a=请输入第一个数:
set /p b=请输入第二个数:
set /a sum=%a%+%b%
echo 和:%sum%
pause
效果如下:
终端标题
从上面示例的输出中可以看到终端窗口的标题默认为 cmd 程序的路径 C:\WINDOWS\system32\cmd.exe
,我们可以通过 title
命令手动指定这个标题,比如:
title zze-test
@echo off
echo hello zze
pause
效果如下:
重定向
Dos 和 Shell 类似也有重定向的概念:
1>
:标准输出重定向;2>
:错误输出重定向;
并且 Dos 中有类似于 Linux 中 /dev/null
的文件,在 Dos 中为 nul
,看下面示例:
@echo off
echo test line 1 1> nul
echo test line 2
echo test line 3
:: test 目录不存在,将标准输出和错误输出都重定向到 nul
dir test 1> nul 2> nul
pause
效果如下:
条件判断
Dos 中的条件判断同样是使用 if/else
实现,看下面示例:
@echo off
set /p a=输入年龄:
if %a% geq 18 (echo 已成年) else (echo 未成年)
pause
效果如下:
goto
Dos 中的 goto
和 C 语言中的 goto
差不多,都是用来让代码跳转到指定位置,看下面示例:
@echo off
:a
set /p a=输入年龄:
if %a% geq 18 (echo 已成年) else (echo 未成年)
pause
goto a
效果如下:
可以看到这里使用 goto
间接实现了循环操作。
评论区