0

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

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

if (201308281436 GTR 201308292309) (@ECHO true) Else (@ECHO false)

据我所知(我不太了解 dos 编程,但我可以做一些基本的事情),它应该返回“真”,但它总是返回“假”。

我对 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)

我究竟做错了什么?

谢谢!

4

1 回答 1

2

去掉括号!

if 1 gtr 0 (echo true) else echo false

你是在比较(10)不是1比较0

编辑-下面给出的解决方法仅适用于两个数字具有相同位数的情况。请参阅Windows 批处理文件 IF 失败 - 30000000000000 如何等于 40000000000?用于比较具有不同位数的大整数的方法。

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