批处理脚本 - 如果没有正确返回结果

时间:2013-08-29 13:17:16

标签: if-statement batch-file cmd

我正在尝试制作一个批处理脚本,我需要比较两个变量,这些变量是整数,但我无法让它正常工作。

我需要做的比较是这样的:

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)

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

删除parantheses!

if 1 gtr 0 (echo true) else echo false

您正在将(10)进行比较,而不是将10进行比较

编辑 - 以下给出的解决方法仅适用于两个数字具有相同位数的情况。有关比较具有不同位数的大整数的方法,请参阅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
>