If statement 批处理脚本-如果未正确返回结果

If statement 批处理脚本-如果未正确返回结果,if-statement,batch-file,cmd,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

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

我需要做的比较如下:

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)
我做错了什么


谢谢

移除妄想

if 1 gtr 0 (echo true) else echo false
您正在将
(1
0
进行比较,而不是将
1
0

编辑-下面给出的解决方法仅在两个数字的位数相同时有效。有关比较具有不同位数的大整数的方法,请参阅

编辑: 找到了一个很好的解决方法:比较字符串,而不是数字(通过在数字前面添加
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
>

谢谢!这很有效,但我还发现我要比较的原始数字太大,如果失败就会出错。@Mykos-只有当这些数字的位数相同时,此比较才能正常工作。有关比较大整数的正确方法,请参阅。@dbenham请参阅运行3和4。看起来在使用不同的di数时,它可以正常运行gits。我用你链接中的数字试过了。可能是因为我添加了一个
a
@dbenham,我想比较的数字是像YYYYMMDDHmm这样的日期,所以这些数字总是有相同的大小。3和4给出了错误的答案!第3次运行中的第一个数字是17位,第二个是16位。但是你报告了吗第一个数字较小!运行5和6工作,因为数字的位数相同