这是我的剧本:
@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
命令的内容是什么?
答案 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%%
在输出中,您可以看到defined
和1
是连接在一起的,因此这是造成奇怪结果的原因
C:\ Windows \ system32 \ cmd.exe / S / D / c“如果已定义1 geq 1 echo %CMDCMDLINE%“
当您从命令行对此进行测试时,您需要将%%cmdcmdline%%
修改为%^cmdcmdline%
,因为cmd-parser与扩展百分比的工作方式略有不同。