根据这个,!==!
是不等字符串运算符。测试结果为:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
我做错了什么?
根据这个,!==!
是不等字符串运算符。测试结果为:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
我做错了什么?
尝试
if NOT "asdf" == "fdas" echo asdf
使用 NEQ 代替。
if "asdf" NEQ "fdas" echo asdf
IF !%1==! GOTO VIEWDATA
REM IF NO COMMAND-LINE ARG...
FIND "%1" C:\BOZO\BOOKLIST.TXT
GOTO EXIT0
REM PRINT LINE WITH STRING MATCH, THEN EXIT.
:VIEWDATA
TYPE C:\BOZO\BOOKLIST.TXT | MORE
REM SHOW ENTIRE FILE, 1 PAGE AT A TIME.
:EXIT0
!%1==!
是一种惯用的使用 ==
的方式,旨在验证左侧包含变量的内容与右侧不包含变量的内容是否不同。在这种情况下,!
只是一个字符占位符��它可以是任何东西。如果 %1
有内容,则相等性将为假,如果没有,则只需比较 !
和 !
,并且结果将为真。
!==!
不是运算符,因此编写 "asdf" !==! "fdas"
是相当荒谬的。
建议使用 if not "asdf" == "fdas"
。
!
是为了防止 %1
为空,从而导致测试 !==!
成立。您可以使用 %1.==.
替代(几乎任何字符都可以),目的是确保等式测试的两侧都有“某些东西”可供测试。!==!
表示不等于符号,最好还是使用 if not ...
。 - Goozak尝试一下:
if not "asdf" == "fdas" echo asdf
我在Windows XP上测试过,这对我有效(使用你所发布的代码时,我遇到了与你相同的错误)。
NEQ通常用于数字比较,而==通常用于字符串比较。
我没有找到任何文件说明针对字符串比较有特定且等效的不等操作符(代替NEQ)。使用IF NOT ==的解决方案似乎是最可靠的方法。我无法立即想到在批处理文件中评估操作时会出现问题或意外行为的情况,当将IF NOT ==比较方法应用于字符串时。
我希望能够了解这两个函数在低级别上的差异如何表现-分解使用NEQ和IF NOT ==的单独批处理文件是否提供任何线索,以确定conhost.exe正在利用哪些(非官方记录)本地API调用?
通过这个链接来实现:
IF %ERRORLEVEL% NEQ 0 Echo An error was found
或者
IF %ERRORLEVEL% GRT 0 goto error1
运算符 !==! 没有正确的值,这意味着它只用于判断变量是否已设置。
IF !%1==! GOTO main