Windows平台Bat|CMD探索

先写几个踩坑实录
1 判断变量的值

set a=1
set b=1 

你们发现上面两行有什么区别吗?
第一行1后面没有空格,第二行1后面有一个空格
那么这样就会在if判断的时候导致一些问题
举个栗子

if %a%==1 echo a1
if %b%==1 echo b2
if %a%=="1" echo a3
if %b%=="1" echo b4
if "%a%"==1 echo a5
if "%b%"==1 echo b6
if "%a%"=="1" echo a7
if "%b%"=="1" echo b8

猜猜看上面会输出哪些行?
第一行当然会输出,因为这就是我们想要让他做的嘛!
第二行也会输出,因为系统会自动优化变量,优先判断是否和整型一致
第三行也会吗?不,他不会,因为这里显式判断了一定要等于字符串类型,你可能会问,a不就是1吗?这里要看前面的 %a% 这里没有加双引号哦,所以还是会被认为是一个整型变量
第四、五、六行同理不会
第七行就肯定会了,同类型的变量比较,当然相同了
第八行呢?第八行不会,"%b%"会被解释为"1 ",并不和"1"相等,所以不会输出

你可能感兴趣的:(Windows平台Bat|CMD探索)