李毛毛的技术专栏 An interesting software testing engineer

批处理---赋值、调用

2020-05-03

bat

赋值

1.字符串赋值

set var = hello world!

如果变量两侧加上百分号%用来表示该变量的值,用来计算显示等处理。

2.数值赋值

在set后面加上/a的参数可以给变量赋予数值型的值

set /a var = 48

3.获取输入的值

在set后面加上/p的参数,可以将变量设成用户输入,读取输入之前,显示指定的提示文字。

set /p var=请输入:

上面示例可以显示一段提示文字“请输入:”并能将用户输入信息保存到变量var里。

4.%的作用

  • 表示变量的值。
  • 对变量中的字符串进行编辑或变换
  • 对变量中的字符进行替换
    set var=12345678
    echo %var%       ----12345678   ----显示所有
    echo %var:~4%    ----5678       ----从第4个字符以后开始显示
    echo %var:~4,3%  ----567        ----从第4个字符以后开始显示,并只显示前3个
    echo %var:~-4%   ----5678       ----从倒数第4个字符开始显示
    echo %var:~4,-2% ----56         ----从第4个字符以后开始显示,显示到还剩2个为止
    echo %var:~0,3%  ----123        ----从头开始显示,并只显示前3个字符
    echo %var:~0,-3% ----12345      ----从头开始显示,显示到还剩3个字符为止
    

调用

1.跳转 goto

goto跟上标签可以让程序从标签开始继续执行随后的命令,不论标签的位置是在该goto命令的前面还是后面。标签必须以单个冒号:开头,但不区分大小写。 :EOF或:eof标签不需要事先定义,能够控制转移到当前批处理脚本文件的结尾处。

@echo off
goto :FirstLable

:SecondLable
echo 然后显示这句
pause
goto :EOF

:FirstLable
echo 首先显示这句
pause
goto :SecondLable

pause

2.调用 call

  • 调用该批处理之外的另一个批处理
  • 有着与goto类似的向特定标签跳转的功能
  • 在调用批处理或标签后的内容处理完成之后,控制会继续执行call后面的语句。
@echo off
call :FirstLable

:SecondLable
echo 然后显示这句
pause
goto :EOF

:FirstLable
echo 首先显示这句
pause
::goto :SecondLable
:::::::::::::::::::::::::

在用call跳转到:FirstLable处执行到程序结尾后(此时call的任务才刚刚完成),会继续回到call语句后的:SecondLable处。假如goto :SecondLable这一句没有被注释掉的话,那么控制会跳转到:SecondLable处直到goto :EOF处,call使命才真正完成。而且,call在完成任务后,下面的:SecondLable处内容会再次执行一遍。

当call作为调用其他新的批处理的用途时,当前批处理就会暂停,直到新的批处理结束后,之前的批处理才会继续执行。

3.启动

  • start后面加上标题,再跟上想要执行程序、命令或网址即可。
  • start可以打开另一个批处理,与call类似,不同的是start调用另一个批处理,之前的批处理会同时继续执行。

扩展

:::::::::::::::163邮箱登录器.bat:::::::::::::::::::::::::
@echo off
::不显示命令行
mode con cols=32 lines=8
::设置窗口的尺寸
title 163邮箱登录器
::设置该批处理的标题
color 3a
::设置背景和文字颜色,color /?可获取详细颜色信息

set /p username=账号:
sel /p password=密码:
::给出输入提示,并赋值给相应变量

start "正在登录邮箱" "https://reg.163.com/logins.jsp?username=%username%&password=%password%&url=http://fm163.163.com/coremail/fcg/ntesdoor2"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::


Comments

Content