BAT批处理文件 变量

变量的类型

批处理中的变量基本上是万能的,可以储存各种各样的数据,不过用来计算时你会发现变量类型转为了int,数值的极端范围为[-2147483648,2147483647],如果不拿来计算的话,似乎数万位也是可以的

变量的命名

批处理的变量命名没有什么限制…不过建议命名还是遵守标准的命名方法,不然
@Echo Off
Set IF=Set
%IF% lF=Goto
:IF
IF %IF%==IF %lF% IF
像这样的代码是很蛋疼的…
正是因为变量的名称是可以自由调配的 : 数字 字母 甚至汉字都可以变成变量名。不像VBS一样。

变量的扩展

扩展,你可以理解为显示出这个的值,如果你想要使用这个变量的值一般情况下都要扩展
扩展方式:%变量%或!变量!
其中!变量!是延迟扩展,需要加上SetLocal EnableDelayedExpansion语句才能够实现,延迟扩展对于新手来说是一个很难理解的东西,就这么说吧,当你的变量在一个语句的内部受到了改变,而在这个改变之后又要输出,那么你必须要延迟扩展,这个牵扯到了奇奇怪怪的预处理机制,不详解了.用连接符号连起来的语句,if,for和它们后面括号内的内容都是属于一个语句
例:

@echo off
set num=10
set num=100&echo %num%
echo %num%
echo 虽然已经将num的值更改为100,但由于没有延迟扩展,所以值仍为10,不过在下一个语句num的值就改变了
pause>nul

例:

@echo off
SetLocal EnableDelayedExpansion
set num=10
set num=100&echo !num!
echo 现在两个num的值一样了
echo %num%
pause>nul

变量在扩展过程中还可以做一点手脚
例:

set str=1234567890
echo %str:~0,5%
echo %str:~1,5%
echo %str:~-5%
echo %str:~5,-2%
echo %str:7890=54321%
pause>nul

很神奇吧?这就是对字符串的处理,这个是批处理的特性,叫“变量延迟”

猜你喜欢

转载自blog.csdn.net/csqxy547/article/details/89402277