когда я запускаю этот сценарий (из файла .bat):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
Я всегда получаю:
ECHO is on.
Это означает, что var2
переменная на самом деле не была установлена. Может ли кто-нибудь помочь мне понять, почему?
&
и&&
операторы. Этот кодset x=some & set y=%x%thing & echo results %y%
выводит%x%thing
.Я немного опаздываю на вечеринку, но другой способ справиться с этим состоянием - продолжить процесс снаружи
if
, напримерИли / и используйте
goto
синтаксисТаким образом, расширение происходит «во времени» и вам не нужно
setlocal EnableDelayedExpansion
. Итог, если вы переосмыслите дизайн своего скрипта, вы можете сделать это такисточник
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
... и он работает. «если вы создадите переменную в командном файле, чтобы к ней можно было получить доступ в любом месте программы». . aticleworld.com/batch-file-variables-and-scope