i @echo off
wydają się nie mieć żadnego wpływu, gdy są wykonywane w bloku o rozmiarze w nawiasach kwadratowych if
w pliku wsadowym. Oto proste demo:Dlaczego funkcja @ECHO ON/OFF nie działa w bloku pliku wsadowego IF?
@echo off
echo Test #1
if 1 == 1 (
@echo on
echo Test #2
@echo off
echo Test #3
)
@echo on
echo Test #4
Wyjście z systemem wyżej w linii poleceń jest:
testowy nr 1
testowy nr 2
test nr 3
C: \ mybatchfilelocation> test echa # 4
Test # 4
Czy ktoś mógłby to wyjaśnić i/lub r zaproponować obejście? (oczekiwać, że prawdopodobnie może być ustalona przez obfitym wykorzystaniem goto
i etykiet, ale wolałby, aby kontynuować korzystanie nawias jeśli bloki jeśli to możliwe ...)
Myślę, że dzieje się tak dlatego, że obecny stan "echo on/off" wpływa tylko na całą linię lub blok; jeśli chcesz kontrolować go dla każdego polecenia osobno, ustaw 'echo on' i poprzedzaj każde polecenie, które chcesz ukryć za pomocą' @ '; – aschipfl
Dzięki, ale niestety wygląda na to, że 'echo on' nie będzie wyświetlać poleceń w nawiasach (zobacz moją nowo dodaną odpowiedź poniżej). –
Nie rozumiem, oba "echo" w twojej odpowiedzi _jest_ 'echo'ed; wstaw '@' przed jednym z 'echo's, aby go ukryć; wstaw '@' przed '(' aby ukryć wszystko po 'if' ... – aschipfl