头图

bat脚本

不区分大小写(for的变量除外)

命令帮助

for /?
set /?

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

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 

输出:
image.png

延迟环境变量

当我们准备执行一条命令的时候,命令解释器会先将命令读取,如果命令中有环境变量,那么就会将变量的值先读取来出,然后在运行这条命令,如:echo %windir%,当我们执行这条命令的时候,命令解释器会先读出%windir%的值,即c:\windows,然后执行echo,得到的结果是屏幕上显示出c:\windows。
开启延迟环境变量之后,命令解释器就不再是运行命令前先将环境变量读取出来再执行,而是当我们用到延迟环境变量的时候再去从环境变量中读取出来,这就延迟了环境变量读取的时间。

  • 延迟环境变量使能:

    setlocal EnableDelayedExpansion
  • 延迟环境变量使用:
    !a! => a表示变量名

setlocal EnableDelayedExpansion
set a=4
set /a a+=1 & echo !a!
pause

COLOR

设置默认的控制台前景和背景颜⾊,颜⾊属性由两个⼗六进制数字指定:第⼀个为背景,第⼆个则为前景。

0 = ⿊⾊   8 = 灰⾊
1 = 蓝⾊   9 = 淡蓝⾊
2 = 绿⾊   A = 淡绿⾊
3 = 湖蓝⾊ B = 淡浅绿⾊
4 = 红⾊   C = 淡红⾊
5 = 紫⾊   D = 淡紫⾊
6 = 黄⾊   E = 淡黄⾊
7 = ⽩⾊   F = 亮⽩⾊

例如: "COLOR fc" 在亮⽩⾊上产⽣亮红⾊


jibin125
0 声望0 粉丝

引用和评论

0 条评论