[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理if命令比较大小时加不加引号有何区别?

我的标题本来想为:if %a% leq 5   if "%a%"  leq "5"有区别吗?但是论坛怎么这么短的标题都不支持呢。

感谢版主解决我的程序中输入空格退出的问题,我由此想到 " " 的作用,在if 语句中什么时候该用,什么时候不用,用不用具体有什么样的区别。我以前做过实验它们有些区别的,现在不记得了。
:back
set /p p="输入:"
if %p% equ 1 echo 1     
goto back         
上面这句输入空格会退出,这样不会了
:back
set /p p="输入:"
if "%p%" equ "1" echo 1     
goto back

[ 本帖最后由 abxialiang 于 2010-1-9 13:13 编辑 ]

两边都是纯数字比较时,不要加双引号,加了后你会发现5大于12,

其实加了双引号后if就是从左向右进行逐字符比较了,因5大于1所以5大于12
***共同提高***

TOP

正是版主说的,当加上引号后就提取第一个值的第一个数字,然后与第二个值的第一个数进行比较,如
if "931" geq "2567" echo 结果
上面这一句明显不应该输出“结果”的,但是会输出,因为程序把“9”与“2”进行比较去了。
请教,如果判断用户输入的数值是否小于56,小于的话输入“小于56”应该怎么写代码呢?当然前提是输入空格的时候不能退出程序,程序是循环运行的。
:back
set /p a="请输入数值:"
if  %a% leq 56 echo "小于56"      或 if  "%a%" leq "56" echo "小于56"  (这两句应该用哪个,一个能正确判断,一个能解决空格问题)
goto back

TOP

  1. :back
  2. set /p a="请输入数值:"
  3. set /a a+=0
  4. if %a% equ 0 goto:back
  5. if %a% leq 56 echo "小于56"
复制代码
1

评分人数

TOP

这样是可以了。

TOP

这样的用法也常有人用
  1. :back
  2. set /p a="请输入数值:"
  3. if 1%a% equ 1 goto:back
  4. if 1%a% leq 156 echo "小于56"
复制代码

TOP

返回列表