Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] BAT - Странное поведение (CALL IF) (http://forum.oszone.net/showthread.php?t=324284)

Clinik 28-02-2017 05:10 2715244

BAT - Странное поведение (CALL IF)
 
Есть папки: bin;exec;include

Есть файлы:
exec\shell.bat с содержимым:
Код:

call ..\bin\set_env.bat
cmd /k cd %~dp0

bin\set_env.bat (вариант 1):
Код:

cd ..\include
SET INCLUDEPATH=%CD%\
SET ENV=true
echo set var

bin\set_env.bat (вариант 2):
Код:

if "%ENV%"=="" (
  cd ..\include
  SET INCLUDEPATH=%CD%\
  SET ENV=true
  echo set var
)

При запуске shell.bat:
1 вариант: INCLUDEPATH = c:\test\include\ (как и требуется)
2 вариант: INCLUDEPATH = c:\test\exec\

Вопрос: почему?

Iska 28-02-2017 06:38 2715247

Цитата:

Цитата Clinik
Вопрос: почему? »

Потому что значение переменной окружения CD вычисляется в момент входа в операторные скобки. Используйте двойное раскрытие:
Код:

call SET INCLUDEPATH=%%CD%%\
Можно использовать и отложенное раскрытие переменных окружения, но это потребует большего кода.


Время: 22:54.

Время: 22:54.
© OSzone.net 2001-