我正在尝试制作一个批处理脚本,我需要比较两个变量,这些变量是整数,但我无法让它正常工作。
我需要做的比较是这样的:
if (201308281436 GTR 201308292309) (@ECHO true) Else (@ECHO false)
据我所知(我对dos编程知之甚少,但我可以做基本的事情),它应该返回“True”,但它总是返回“false”。
我对cmd进行了一些检查,结果如下:
if (1 GTR 2) (@ECHO true) Else (@ECHO false)
false
if (1 GTR 0) (@ECHO true) Else (@ECHO false)
false
我在bat脚本上使用的代码:
if (%filemodifieddate% GTR %filelastbackupdate%) (@ECHO true) Else (@ECHO false)
我做错了什么?
谢谢!
答案 0 :(得分:2)
删除parantheses!
if 1 gtr 0 (echo true) else echo false
您正在将(1
与0)
进行比较,而不是将1
与0
进行比较
编辑 - 以下给出的解决方法仅适用于两个数字具有相同位数的情况。有关比较具有不同位数的大整数的方法,请参阅Windows batch file IF failure - How can 30000000000000 equal 40000000000?。
编辑:
找到了一个很好的解决方法:比较字符串,而不是数字(通过在数字前添加a
。
试验一下:
@echo off
if a%1 lss a%2 echo one
if a%2 lss a%1 echo two
(将其放在批处理文件(t.bat)中并使用两个参数执行:
> t 1 3
one
> t 3 1
two
> t 54135143513513153 5613535314535543
one
> t 5613535314535543 54135143513513153
two
> t 5613535314535543 5413514351351315
two
> t 5413514351351315 5613535314535543
one
>