Answers:
我知道这已经过时了,但是这对于那些晚到聚会的人仍然有用。(编辑:已更新,因为这仍然会带来流量,并且@Goozak在评论中指出,我对样本的原始分析也是不正确的。)
我从您链接中的示例代码中提取了此代码:
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 ...
。
尝试:
if not "asdf" == "fdas" echo asdf
在Windows XP上适用于我(对于您发布的代码,我会收到与您相同的错误)。