2017-05-22 38 views
0
if "%variable%" == "Some stuff" goto menu 
if "%variable%" EQU "Some stuff" goto menu 

它們都具有相同的功能... ==EQU的符號表示形式。批處理中的以下符號是什麼?

我們如何顯示NEQLES,LEQ,GTR, GEQ符號?

謝謝。

+3

我們不知道。我們使用什麼[if](https://ss64.com/nt/if.html)提供:EQU,NEQ,LES,LEQ,GTR,GEQ。 '=='是出於兼容性的原因(用'EQU'替代,它是唯一由DOS支持的'ifif' – Stephan

+2

IF僅在(EQU,NEQ,LSS,LEQ,GTR,GEQ)之一使用 ==比較運算符總是導致字符串比較https://ss64.com/nt/if.html – RGuggisberg

+0

Stephan提供的評論除外:'=='是唯一的MS- DOS,Windows 95和Windows 98(使用command.com作爲命令解釋器)對於「不等於」,可以使用「if not」%variable%「==」即使對於那些舊的操作系統,也可以使用「goto menu」這當然也受到Windows NT命令解釋器cmd.exe的支持,而且基於3字母的操作符只能在默認啓用命令擴展的情況下工作,在批處理文件頂部使用'setlocal DisableExtensions',Windows命令解釋器在DOS下/ Win9x「模式,也沒有'/ I'。 – Mofi

回答

1

不幸的是,只有EQU有一個等效符號====符號雖然用於字符串比較。而IF只會在使用(EQU, NEQ, LSS, LEQ, GTR, GEQ)之一時解析數字。

下面是NEQ等同,但:

if NOT "%variable%" == "Some stuff" ::NEQ 
+2

」'if' will only p屁股號......「?不,也可以使用'xxx'比較器處理字符串:'如果德國GTR奧地利迴應yes'。 (我不認爲'如果'知道這兩個國家有多大......) – Stephan

+0

如果比較的兩個參數之一不能用函數[strtol](http://www.cplusplus.com/reference/cstdlib/strtol /)作爲整數比較,例如因爲一個參數以雙引號開頭,Windows命令解釋程序會自動運行字符串比較[strcmp](http://www.cplusplus.com/reference/cstring/strcmp /),它的返回值是一個整數,其值爲< 0, 0 and > 0,因此'EQU,NEQ,LSS,LEQ,GTR,GEQ'也可以在字符串比較中工作。該比較包括周圍的雙引號。 – Mofi

+1

還有一點需要注意:'IF 020 EQU 20(echo EQUAL)else(echo NOT EQUAL)'輸出'NOT EQUAL',因爲020被解釋爲八進制數,因此十進制值16不等於20.請參見堆棧溢出文檔頁[批處理文件中的變量](http://stackoverflow.com/documentation/batch-file/3528/)瞭解有關比較兩個參數或使用算術表達式的字符串到整數轉換的詳細信息。 – Mofi

相關問題