Пакетному файлу не удается установить переменную среды в условном операторе

Vue уже связывает методы компонента во время инициализации, и функции не могут быть связаны более одного раза (последующие привязки не имеют никакого эффекта).

Таким образом, когда инициализируется App, Vue связывает экземпляр App как контекст его метода dontPassThis. App «передает» dontPassThis в Test2 через опору, которую впоследствии Test2 пытается связать, что на самом деле ничего не делает.

14
задан Daniel Fortunov 18 May 2009 в 11:21
поделиться

3 ответа

What's happening is that variable substitution is done when a line is read. What you're failing to take into account is the fact that:

if 1==1 (
    set _=Baz
    echo %_%
)

is one "line", despite what you may think. The expansion of "%_%" is done before the set statement.

What you need is delayed expansion. Just about every single one of my command scripts starts with "setlocal enableextensions enabledelayedexpansion" so as to use the full power of cmd.exe.

So my version of the script would be:

@echo off
setlocal enableextensions enabledelayedexpansion

set _=Foo
echo !_!
set _=Bar
if 1==1 (
    set _=Baz
    echo !_!
)

endlocal

This generates the correct "Foo", "Baz" rather than "Foo", "Bar".

28
ответ дан 1 December 2019 в 07:41
поделиться

Ответ на этот вопрос такой же, как и на: Непонятная проблема с областью действия в пакетном файле . Смотрите там для более подробной информации. Обычно расширение переменных выполняется во время чтения строки, а не во время выполнения.

4
ответ дан 1 December 2019 в 07:41
поделиться

попробуйте это

@echo off
setlocal

set _=Foo
echo %_%
set _=Bar
if "1" NEQ "2" goto end
set _=Baz
echo %_%
:end
3
ответ дан 1 December 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: