kiedy uruchamiam ten skrypt (z pliku .bat):
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo %var2%
)
Zawsze dostaję:
ECHO is on.
Oznacza to, że var2
zmienna nie została tak naprawdę ustawiona. Czy ktoś może mi pomóc zrozumieć, dlaczego?
&
i&&
. Ten kodset x=some & set y=%x%thing & echo results %y%
wyprowadza%x%thing
.Trochę spóźniłem się na imprezę, ale innym sposobem radzenia sobie z tym stanem jest kontynuowanie procesu na zewnątrz
if
, w ten sposóbLub / i użyj
goto
składniW ten sposób ekspansja następuje „w czasie” i nie jest to potrzebne
setlocal EnableDelayedExpansion
. Podsumowując, jeśli przemyślisz projekt swojego skryptu, możesz to zrobić w ten sposóbźródło
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause
... i działa. „jeśli utworzysz zmienną w pliku wsadowym, do której będzie można uzyskać dostęp w dowolnym miejscu programu”. . aticleworld.com/batch-file-variables-and-scope