2015-04-20 35 views
0

我正嘗試在Windows批處理腳本中使用GEQ(大於或等於)。 我有Windows批處理GEQ不按預期方式工作

if %count% GEQ 10 

的IF子句測試,同時計數%計%一上來每遍。我曾預料在十次傳球后這種狀況是真實的。但是,運行兩次後,條件成立,而%count%爲2.

如果我用==代替GEQ,它按預期工作,顯示傳遞數最多爲10並退出。在這一點上,我真的不明白我的錯誤在哪裏。請給我一個提醒。

代碼:

@ECHO OFF 
SETLOCAL 
CLS 

ECHO. 
SET /a max = 10 
ECHO This should run %max% times: 

:REPEAT 
set /a count = "%count%"+1 
ECHO Test %count% 

IF "%count%" GEQ "%max%" (
    GOTO :QUIT 
) ELSE (
    GOTO :REPEAT 
) 

:QUIT 
ECHO. 
ECHO Done. 
+3

如果您想比較數字,請不要在「if」cl中加入引號ause,否則你將使用字符串,而不是數字。 –

回答

1
IF "%count%" GEQ "%max%" (

使用引號,你強迫if比較字符串,而不是數字,所以2是大於19514

而是寫:

IF %count% GEQ %max% ( 
+0

我知道在這一點上使用字符串進行比較是沒有意義的。但是我不明白爲什麼「2」比「19514」大,因爲第二個字符串更大的轉化爲int以及更長的字符串,它在各個方面都更大。 – Strongground

+1

不,它不是。第一個字符,'2'比'1'大',就是這樣,如果第一個字符相等,則_then_比較第二個字母等等,沒有檢查字符串的長度 – Stephan

+0

噢,我認爲它確實使用了詞典對比。感謝您的澄清! – Strongground