使用以下内容创建批处理文件:
@echo off
setlocal
echo %1
if [%1] == [] echo hi
然后从命令提示符运行它,如下所示:
script.cmd ==
它将输出以下内容:
ECHO is off.
hi
为什么会这样,它是如何发生的?另外,如何在批处理脚本中更可靠地检查空字符串?
感谢。
答案 0 :(得分:2)
在这种情况下,我建议使用以下内容:
@echo off
setlocal
echo(%~1
if "%~1"=="" echo hi
而不是script.cmd ==
使用script.cmd "=="
请注意,我使用了echo(
,如果变量被视为空,则会回显换行符,并且我使用%~1
删除%1
参数中的周围引号。
你需要周围的引号,因为equal-sign is treated as a delimeter in the arguments,除非在引号内,就像空格一样。
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
SET "cmdtail=%*"
ECHO(%cmdtail%
IF "%cmdtail%"=="==" ECHO two "="
但回到未说明的原始问题。
请注意,此语法将检测作为命令尾部提供的==
,而%~1
将不会评估为==
。