使用以下代码,
echo off
if 1==1 (
echo on
pwd
)
我期望以下输出
C:\> echo off
pwd
C:/
但是我正在得到这些。
C:\> echo off
C:/
在if子句中再次打开echo后,为什么缺少'pwd'?
答案 0 :(得分:1)
完整代码:
:: Read 1.
echo off
:: Echo off here and will affect Read 2.
@echo
:: Read 2.
if 1==1 (
echo on
cd
)
:: Echo on here and will affect Read 3.
@echo
:: Read 3.
cd
从解释器读取的3条内容是此代码的重点。
@echo
被忽略,因为它只是为了显示实际内容
当前echo
的测试状态。
第一读是:
echo off
默认情况下,脚本以echo on
开始,因此读取的内容将以echo on
显示。
二读是:
if 1==1 (
echo on
cd
)
括号引起多行代码块,因此将其读为一读。
echo on
的执行在下一次读取之前不会生效。
该代码块中的echo on
现在来不及影响
当前读取,因为它已经被读取。
三读是:
cd
第二次读取的echo on
将影响第三次读取,并且echo
在执行命令之前先执行命令cd
。