Почему 'echo on' неэффективен в условии if в скрипте bat? - PullRequest
0 голосов
/ 05 декабря 2018

Со следующим кодом,

echo off
if 1==1 (
    echo on
    pwd
)

Я ожидаю следующий вывод,

C:\> echo off
pwd
C:/

, но я получаю это.

C:\> echo off
C:/

Почему«pwd» отсутствует после того, как я снова включил эхо в предложении if?

1 Ответ

0 голосов
/ 05 декабря 2018

Полный код :

:: 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 для тестирования.

1-е чтение :

echo off

Поскольку скрипт начинается по умолчанию с echo on, то это чтение будет отображаться с echo on.

2-е чтение :

if 1==1 (
    echo on
    cd
)

Скобкивызывает блок многострочного кода, поэтому он читается как одно чтение.Выполнение echo on не будет иметь никакого эффекта до следующего чтения.Слишком поздно для echo on в этом блоке кода повлиять на текущее чтение, поскольку оно уже было прочитано.

3-е чтение :

cd

echo on 2-го чтения повлияет на 3-е чтение и echo перед * выполнением команды cd.

...