我只需要在某些条件下初始化多个env变量,除了命令行之外我不能使用任何东西。 对于我的问题的例子,我将采用初始化字母表的简单案例。
第一个cmd脚本是:
@echo OFF
set PATH=%PATH%;"%~dp0"
IF "%_ALPHABET%"=="" (
echo "DEFINE"
call setEnvA
call set "_ALPHABET=%_ALPHABET%;b"
) ELSE (
echo "ALREADY DEFINE"
set _ALPHABET=
set A_ADDED=
)
setEnvA cmd是:
IF "%A_ADDED%"=="" (
set A_ADDED=OK
set _ALPHABET=%_ALPHABET%;a
)
我在考虑
;a;b
结果,但我只得到
;b
我试图抛出随机的delayedexpansion但没有任何结果。我开始认为这是不可能的,我应该做一些肮脏的转到。
答案 0 :(得分:0)
在执行对setEnvA的调用之前,在括号中替换环境变量_ALPHABET的内容。您需要执行以下操作:
@echo OFF
set PATH=%PATH%;"%~dp0"
IF "%_ALPHABET%"=="" (
echo "DEFINE"
call setEnvA
call :set_ALPHABET
) ELSE (
echo "ALREADY DEFINE"
set _ALPHABET=
set A_ADDED=
)
exit /b
:set_ALPHABET
set "_ALPHABET=%_ALPHABET%;b"