BAT脚本__赋值 调用 参数

Title

title 现在标题已经换成这句了

Set

字符串赋值:

set var=Hello world!

整型赋值(有符号,4字节):

set /a var=48
*注意点:
set var1=3
set /a var2=5+%var1% => var1被转换为整型3
echo %var2% => 这里是8

从外部获得输入:

set /p var=请输入一些文字:

字符处理:

字符替换

set var2=%var:ld=ms and bugs% => ld 替换成 ms and bugs

控制字符输出

输入的命令    结果    效果                   
echo %var%    1234567890 显示所有                 
echo %var:~4%   567890   从第4个字符以后开始显示         
echo %var:~4,3%  567     从第4个字符以后开始显示,并只显示前3个  
echo %var:~-4%  7890    从倒数第4个字符开始显示         
echo %var:~-4,3% 789     从倒数第4个字符开始显示,并只显示前3个  
echo %var:~4,-2% 5678    从第4个字符以后开始显示,显示到还剩2个为止
echo %var:~0,3%  123     从头开始显示,并只显示前3个字符     
echo %var:~0,-3% 1234567   从头开始显示,显示到还剩3个字符为止

字符拼接

set var2=789abc
set var3=123456
set var1=%var3:~2,3%%var2:~3,3%
echo %var1% => var1为345abc

Call

调用其他新的批处理

当前批处理就会暂停,直到新的批处理结束后,之前的批处理才会继续执行。(并行处理使用start)
call test.bat
call ..\abc\test.bat
call D:\abc\test.bat

作跳转使用

与goto的区别:被跳转标签后的内容处理完成以后,控制会继续执行 call 后面的语句。

::::::::::::跳转.bat::::::::::::
@echo off
call :FirstLable

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

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

EOF

隐形标签文件尾
goto :EOF

Start

start msconfig => 用来打开"系统配置应用程序"
start cmd => 用来打开一个新的命令提示符
start "随便写个标题" => 标题要用双引号引用起来,否则会被作为可执行的文件来处理
start http://www.baidu.com => 便打开百度的首页
start E:\game\starcraft\starcraft.exe => 开始星际争霸
start next.bat => 启动另一个批处理 ,与当前bat并行处理

参数的输入与输出

Num作为数值参数,Square作为变量参数,变量参数可作输出参数。

===cur.bat===

echo here is cur.bat
set /a Num=4
set /a Square=1
call current.bat %Num% Square
echo come back to cur.bat , and %Num% square is %Square%
pause

===current.bat===

echo here is current.bat
echo first var is %1
echo second var is %2
set /a %2=%1*%1
echo after cal, var1 is %1
echo after cal, var2 is %2

输出:
BAT脚本__赋值 调用 参数_第1张图片

你可能感兴趣的:(bat)