Command line 嵌套IF/ELSE中的命令行集
我只需要在某些条件下初始化多个env变量,我只能使用命令行。 对于我的问题,我将以初始化字母表为例 第一个cmd脚本是:Command line 嵌套IF/ELSE中的命令行集,command-line,nested,set,Command Line,Nested,Set,我只需要在某些条件下初始化多个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=
@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
我试图抛出随机延迟展开,但没有任何结果。我开始认为这是不可能的,我应该做一些肮脏的转到。在执行对setEnvA的调用之前,在括号内替换环境变量_字母表的内容。您需要执行以下操作:
@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"
谢谢你,保罗!当前代码答案的唯一问题是退出(因为我需要留在进程中),但我会想出一个办法。@paulc exit/b只终止脚本,而不终止进程——它相当于goto:eof。