echo命令

echo显示当前ECHO设置状态

echo.输出空行,即相当于输入一个回车,echo后面的点要紧挨一起,中间不能有空格,后面的点可以用,:;/[ \ ]+等任一符号替代。即:下面的命令都是输出空行:

 echo.
 echo,
 echo:
 echo;
 echo/
 echo\
 echo[
 echo]
 echo+

echo 文字,输出设置的文字内容

echo连续打出几个空格 echo输出空行_批处理


@符号:隐藏后面的执行指令

echo连续打出几个空格 echo输出空行_批处理_02


函数:
函数以一个标签开始,并以goto:eof结束


函数怎么工作

调用函数的脚本将其分成两部分。

1.main script: 从第一行开始并且以 GOTO:EOF命令结束

2.函数部分:由多个函数组成,由main script调用。

echo连续打出几个空格 echo输出空行_DOS命令_03




编写带参数的函数

采用%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


echo连续打出几个空格 echo输出空行_echo连续打出几个空格_04



环境变量


在dos中直接输入

set会输出所有的本地环境变量



变量的设置与引用


调用函数后不像其他语言那样能有返回值,最常用的做法是先用set定义一个

全局变量,然后在函数中使用该全局变量并将需要的值保存在全局变量中


直接用该全局变量。



SET命令设置变量,用

%xy%引用变量xy


@echo off
set var=hello world
echo %var%
pause


交互式的变量(set /p)


让用户自己输入变量的值,然后我们在来根据这个值来做相应操作


set /p 变量名=提示语


echo连续打出几个空格 echo输出空行_set_05



表达式类型的变量(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


运算符


() 分组


! ~ - 一元运算符


* / % 算数运算符


+ - 算数运算符



= *= /= %= += -= 赋值


&= ^= |= <<= >>= 表达式分隔符



对于逻辑或取余操作符,使用的时候需要添加引号才能正常使用,否则报错


<< >> 逻辑移位


& 按位“与”


^ 按位“异”,非


| 按位“或”



echo连续打出几个空格 echo输出空行_批处理_06



字符串替换(=)
%PATH:str1=str2%这个操作就是把变量%PATH%里的str1全部用 str2替换
实例:

@echo off
set a=www.baidu.com
echo 替换前的值:%a%
set b=%a:.=点%
echo 替换后的值:%b%
pause


echo连续打出几个空格 echo输出空行_DOS命令_07



字符串截取(~)


@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

echo连续打出几个空格 echo输出空行_set_08


截取的作用

echo连续打出几个空格 echo输出空行_echo_09

函数的局部变量
局部变量放在SETLOCALENDLOCAL之间定义。
SETLOCAL可以很好的保护函数内与外面的变量不会冲突。即:

setlocal
set var1=xxx
set var2=xxx
endlocal