当我输入它时,IF命令会发生什么?

时间:2014-04-20 17:17:34

标签: batch-file if-statement cmd io-redirection

这是我的剧本:

   @echo off
    echo.|if defined 1 geq 1 echo 1 is geq than 1
    echo.|if defined 2 gtr 100 echo 2 is gtr than 100

    echo.|if 1 gtr gtr 100 echo 1 is gteater than 100
    echo.|if 100 lss gtr 100 echo 100 is gteater and the same time less than 100

输出是:

1 is geq than 1
2 is gtr than 100
1 is gteater than 100
100 is gteater and the same time less than 100

IF命令的内容是什么?

2 个答案:

答案 0 :(得分:2)

改变这个:

if defined 1 geq 1 echo 1 is geq than 1

到此:

if defined 1 if 1 geq 1 echo 1 is geq than 1

答案 1 :(得分:2)

批处理解析器在IF之后连接第一个标记。

要获得洞察力,您可以使用cmdcmdline变量。

从批处理文件

@echo off
echo pipe | if defined 1 geq 1 echo %%cmdcmdline%%

在输出中,您可以看到defined1是连接在一起的,因此这是造成奇怪结果的原因

  

C:\ Windows \ system32 \ cmd.exe / S / D / c“如果已定义1 geq 1 echo   %CMDCMDLINE%“

当您从命令行对此进行测试时,您需要将%%cmdcmdline%%修改为%^cmdcmdline%,因为cmd-parser与扩展百分比的工作方式略有不同。