1 @echo off
2 :: 批处理中所谓的函数,是用标签定义功能充当的。支持参数的传递,类似脚本文件运行时命令行参数的传递。
3 :: 函数返回值用标签作为变量名作为返回使用,用完标签名变量立即释放变量,避免后面同样需要调用该函数,引起返回值的混乱。
4 :: exit /b code 在标签定义中表示退出当前函数,并返回错误状态值code。在call调用完毕后,回到call调用处继续执行后续指令。
5 :: 不带/b表示直接退出cmd环境。
6
7
8
9 :::::::::::::::::::::::::::::::Main Begin::::::::::::::::::::::::::::::::::::::::::::::
10 :Main
11 echo;欢迎进入批处理天地!
12 echo;
13 echo;加法运算开始.
14 set /p n1=请输入第一个数字:
15 set /p n2=请输入第二个数字:
16
17 call :IsDigital %n1%
18 set r1=%errorlevel%
19 call :IsDigital %n2%
20 set r2=%errorlevel%
21
22
23 if "%r1%"=="200" (
24 if "%r2%"=="200" (
25 call :Add %n1% %n2%
26 call,echo;%n1%与%n2%之和为:%%Add%%
27 ) else (echo;%n2%不是数字无法参与运算.)
28 ) else (echo;%n1%不是数字无法参与计算.)
29
30 pause & exit
31 :::::::::::::::::::::::::::::::Main End::::::::::::::::::::::::::::::::::::::::::::::
32
33
34 :::::::::::::::::::::::::::::::Add Begin::::::::::::::::::::::::::::::::::::::::::
35 :: 功能:两数相加。
36 :Add
37 ::变量传递查看。
38 ::echo;%*
39 set /a num1=%1
40 set /a num2=%2
41 set sum=
42 set /a sum=%num1% + %num2%
43 ::echo;%num1% + %num2% = %sum%
44 ::返回值用标签当作变量返回。
45 set /a add=%sum% &exit /b 0
46 :::::::::::::::::::::::::::::::Add End::::::::::::::::::::::::::::::::::::::::::
47
48 :::::::::::::::::::::::::::::IsDigital Begin:::::::::::::::::::::::::::::::::::::::::::
49 :: 功能:判断给入的字符是否是纯数字。
50 :: exitcode 200 表示成功,是数字。250 表示失败,不是数字。
51 :IsDigital
52 set "num=%1"
53 ::情况一:数字字符串中含空格。
54 ::set num=%num: =%
55 echo;%num%|findstr "^[0-9][0-9]*$" >nul && call,set IsDigital=%%num%%
56 if not defined IsDigital (echo;%num%不是数字. & exit /b 250) else (echo;%num%是纯数字. & exit /b 200)
57 :::::::::::::::::::::::::::::IsDigital End:::::::::::::::::::::::::::::::::::::::::::