- @echo off
- color b0
- title set 比较大小练习
- @mode con cols=30 lines=15
- set a= 150
- set b= 80
- if not a lss b echo a 他吗的造反了,竟然大于b了,哈哈
- echo.&echo.
- echo.&echo.
- pause
复制代码
我运行了,竟然出错了,明明是 a >b 的,现在怎么出错了呢?
怪了。经过pusofalse的指点
理由是这样的....
───────────────────────────────────────
这句 if not a lss b echo a 他吗的造反了,竟然大于b了,哈哈
系统识别为 a 和b为常量,而并非变量,所以他判断的是常量的大小
系统规定 a<A<b<B<c<C<d<D<e.......<z<Z 这是字母从小到大的顺序
所以 以上代码并不显示
必须改成- @echo off
- color b0
- title set 比较大小练习
- @mode con cols=30 lines=15
- set a= 150
- set b= 80
- if not %a% lss %b% echo a 他吗的造反了,竟然大于b了,哈哈
- echo.&echo.
- echo.&echo.
- pause
复制代码
这样系统才认识a是变量 ,是set设定的值 150,仅仅 a ,就是一个常量。
%a% 就可以识别变量,那%a% 与%%a 又有什么区别呢
于是乎,我又去问pusofalse了,呵呵
他说。。%%a 是for 命令的变量,在for命令里会被识别
%a% 是set命令的变量,在set命令里会被识别为变量。- for %%a in (1 2 3) do echo %%a
- pause
复制代码
而不是下面的代码,下面的代码运行就出现错误。呵呵。。- @echo off
- for %a% in (1 2 3) do echo %a%
- pause
复制代码
其他 pusofalse 还说 for 命令中的 大小写是区分的,
是不一样的。例如 %%A 与%%a 是不一样的
下面的代码就出错。- @echo off
- for %%A in (1 2 3) do echo %%a
- pause
复制代码
而在set 中并不区分 大小写。
═╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬
特别感谢pusofalse的解答。我把他说的都写上来了,以前学习批处理,见for if set
就跑。说自己不搞这些,太难,看来,我必须搞了,搞了一年多,这命令不懂,很难
杀进 批处理的大门!
═╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬══╬╬