我正在制作一个只有特定用户可以使用的“锁定”批处理文件,因此我现在正在做的是检查写入的内容user
或==
其他%username%
变量的条件,如下所示:
if /i "%Nom%" == %UserName% Goto :Next2
这%Nom%
是用户写的。
我尝试了多种方法,但找不到办法。
答案1
看:
if /i "?" == "?" ( true ) else ( false ) // return condition True
if /i "?" == ? ( true ) else ( false ) // return condition False
if /i [?] == [?] ( true ) else ( false ) // return condition True
if /i [?] == "?" ( true ) else ( false ) // return condition False
if /i [?] == [?] ( true ) else ( false ) // return condition True
if /i "[?]" == ["?"] ( true ) else ( false ) // return condition False
if /i "{?}" == "{?}" ( true ) else ( false ) // return condition True
if /i "/?/" == /?/ ( true ) else ( false ) // return condition False
if /i \?\ == \?\ ( true ) else ( false ) // return condition True
if /i /?/ == "/?/" ( true ) else ( false ) // return condition False
这将始终返回False
比较条件"string"
等于 string
,因为在比较中双引号是字符串的组成部分,将与引号整体进行比较。
请注意,引号不构成任何转义和/或命令的补充if
,而是在执行中作为被比较的一部分,因此,在if
、if /i
或if Not
之后的所有内容ìf /i not
始终将是与在相等之后的内容进行比较的对象,无论是否有""
、 和/或[]
、{}
等......
因此,您正在使用:
if /i "?" == ? ...
if /i "%Nom%" == "%UserName%" Goto :Next2
附言1: "Something Inside Double Quotes"
相比Something Outside Double Quotes
,它应该是:"Something Inside Double Quotes"
相比"Something Inside Double Quotes"
附言2:为了数值比较(的integers
), 使用:
if integer EQU integer ...
if 1 EQU 1 ...
EQU : Equal
NEQ : Not equal
LSS : Less than <
LEQ : Less than or Equal <=
GTR : Greater than >
GEQ : Greater than or equal >=
This 3 digit syntax is necessary because the > and <
symbols are recognised as redirection operators
IF will only parse numbers when one of (EQU, NEQ, LSS, LEQ, GTR, GEQ) is used.
The == comparison operator always results in a string comparison.
- 来源: