使用以下内容创build一个batch file:
@echo off setlocal echo %1 if [%1] == [] echo hi
然后从命令提示符运行它,如下所示:
script.cmd ==
它会输出以下内容:
ECHO is off. hi
为什么是这样的,这是怎么发生的? 另外,如何更可靠地检查批处理脚本中的空string?
谢谢。
在这种情况下,我建议使用以下内容:
@echo off setlocal echo(%~1 if "%~1"=="" echo hi
而不是script.cmd ==
使用script.cmd "=="
请注意,我使用了echo(
如果变量被看作是空的,它将会回显一个换行符,而且我用%~1
从%1
参数中删除了周围的引号。
你需要周围的引号,因为等号在参数中被当作一个分隔符 ,除非在引号内,就像空格一样。
@ECHO OFF SETLOCAL SET "cmdtail=%*" ECHO(%cmdtail% IF "%cmdtail%"=="==" ECHO two "="
但回到原来的问题。
请注意,该语法将检测作为命令尾部提供的==
,而%~1
不会计算为==
。