l echo是显示当前ECHO设置状态;
l echo.输出空行,即相当于输入一个回车,echo后面的点要紧挨一起,中间不能有空格,后面的点可以用,:;/[ \ ]+等任一符号替代。即:下面的命令都是输出空格:
- echo.
- echo,
- echo:
- echo;
- echo/
- echo\
- echo[
- echo]
- echo+
l echo 文字,输出设置的文字内容
@符号:隐藏后面的执行指令
函数:
函数以一个标签开始,并以goto:eof结束
函数怎么工作
调用函数的脚本将其分成两部分。
1.main script: 从第一行开始并且以 GOTO:EOF命令结束
2.函数部分:由多个函数组成,由main script调用。
编写带参数的函数
采用%1~%9来代表参数的值。而%0表示批处理文件本身,当然,如果传递的参数是“xxx”形式,而要获取的参数值为xxx,则需要使用%~1形式的参数。
:myFunction
echo it could do %~1 of things %~2
goto:eof
调用时给函数传参
(参数直接放在函数后面,用空格或逗号分隔)
1.用空格或者逗号将参数分开
2.用双引号将带有空格的字符串参数括起来
- call:myDosFunc 100 YeePEE
- call:myDosFunc 100 "for me"
- call:myDosFunc 100,"for me"
传参实例:
@echo off
call:myFunction 100 hello
call:myFunction 100,hello
call:myFunction 100,"hello"
call:myFunction 100 "hello world"
echo.&pause&goto:eof
:myFunction
echo.
echo it could do %1 of things %2
echo it could do %~1 of things %~2
goto:eof
环境变量:
在dos中直接输入set会输出所有的本地环境变量
变量的设置与引用
调用函数后不像其他语言那样能有返回值,最常用的做法是先用set定义一个全局变量,然后在函数中使用该全局变量并将需要的值保存在全局变量中
直接用该全局变量。
SET命令设置变量,用%xy%引用变量xy
@echo off
set var=hello world
echo %var%
pause
交互式的变量(set /p)
让用户自己输入变量的值,然后我们在来根据这个值来做相应操作
set /p 变量名=提示语
表达式类型的变量(set /a)
set /a var=2 - 1
set /a var=2 * 2
set /a var=2 / 2
set /a var=(1+1) + (1+1)
set /a a=1+1,b=2+1,c=3+1
set /a var+=1
set /a var*=2
运算符
() 分组
! ~ - 一元运算符
* / % 算数运算符
+ - 算数运算符
= *= /= %= += -= 赋值
&= ^= |= <<= >>= 表达式分隔符
对于逻辑或取余操作符,使用的时候需要添加引号才能正常使用,否则报错
<< >> 逻辑移位
& 按位“与”
^ 按位“异”,非
| 按位“或”
字符串替换(=)
%PATH:str1=str2%这个操作就是把变量%PATH%里的str1全部用 str2替换。
实例:
@echo off
set a=www.baidu.com
echo 替换前的值:%a%
set b=%a:.=点%
echo 替换后的值:%b%
pause
字符串截取(~)
@echo off
set a=www.baidu.com
echo 替换前的值:%a%
set b=%a:.=点%
echo 替换后的值:%b%
::从下标1对应的位置开始,截取4位字符(下标从0开始)
set c=%b:~1,4%
echo %c%
::从第2位开始截取,截止倒数第4位
set f=%b:~1,-4%
echo %f%
::截取3对应的下标到末尾的字符
set e=%b:~3%
echo %e%
::截取-3对应的下标到末尾的字符,即倒数3位
set d=%b:~-3%
echo %d%
echo.
pause
函数的局部变量
局部变量放在SETLOCAL与ENDLOCAL之间定义。
SETLOCAL可以很好的保护函数内与外面的变量不会冲突。即:
setlocal
set var1=xxx
set var2=xxx
endlocal
来源:https://www.cnblogs.com/lizhanjl/p/6908396.html