前一篇我们差不多就讲了一个hello world难度的脚本,现在我们来新学三个平常一定会用到的概念。变量、条件分支判断和跳转
①:变量
在bat脚本中,变量是特别常用的。我们可以这么申明一个变量。
set param=hello
set "param=hello world"
set "parm=a^&b"
解释:申明变量时等于号一定要靠左边写,中间不能有空格。右边如果有空格表示将空格也赋值给这个变量;对于字符串中有空格的建议还是加上引号;如果赋值中有特殊字符(<>|&^等)必须用引号包着变量名和值,然后在特殊字符前加^转义。
变量的引用,使用%将变量包起来 比如
set num=1
echo %num%
变量这部分就讲这些基础的吧,还有很多别的用法我们后面用到再说。
②:条件判断与分支语句
平常我们写代码的时候分支用的最多的就是if/else了,今天我们就讲这个吧。
if主要用两种判断:结果判断和存在判断
结果判断:可以用来判断变量值
if %num%==1 echo 相等
存在判断:比如判断某个文件或者目录是否存在
if exist D:\software\script\bat\test echo 存在
如果有分支
if %num%==1 (
echo 相等
) else (
echo 不相等
)
如果在分支中存在重新对变量赋值和判断的情况,可能需要延迟变量环境扩展。这部分后续会介绍,这个地方暂时不考虑。
③:跳转
跳转这个就有点意思了,程序遇到goto的时候就会跳转到goto标签定义的部分执行。和我们定义了方法然后在别处调用时一样的。
定义一个标签我们使用冒号加一个标签名称
.....goto functionA
.....
:functionA
当执行到goto functionA的时候会跳转到:functionA处继续执行,goto和标签是一一对应的。
下面来看个和if标签组合的例子。
set filename=test.txt
set content=aaaaaaaa
if exist test.txt (
goto append
) else (
goto create
)
:append
echo %content% > %filename%
:create
echo %content% >> %filename%
今天就讲这么多了,我们来总结下今天的脚本
::变量赋值
@echo off
set "num=a^&b"
set num=2
echo %num%
pause
::条件分支
if %num%==1 (
echo 相等
) else (
echo 不相等
)
if exist D:\software\script\bat\test echo 存在
pause
::条件分支和跳转的组合
set filename=test.txt
set content=aaaaaaaa
if exist test.txt (
goto append
) else (
goto create
)
:append
echo %content% > %filename%
:create
echo %content% >> %filename%