2013-08-29 193 views
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 

使用蝙蝠腳本,即時通訊代碼:

if (%filemodifieddate% GTR %filelastbackupdate%) (@ECHO true) Else (@ECHO false) 

我到底做錯了什麼?

謝謝!

回答

2

刪除隱去!

if 1 gtr 0 (echo true) else echo false 

您比較(10),而不是與0

編輯比較1 - 下面只給出解決辦法工作,如果兩個號碼具有相同的位數。查看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 
> 
+0

謝謝!這工作,但我也發現,我想要的原始數字比較過大,導致IF失敗。 – Mykos

+0

編輯以比較真正的大數字 – Stephan

+0

@Mykos - 只有數字具有相同的數字位數時,此比較才能正常工作。請參閱http://stackoverflow.com/q/9116365/1012053以瞭解比較大整數的正確方法。 – dbenham