Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 嵌套IF/ELSE中的命令行集_Command Line_Nested_Set - Fatal编程技术网

Command line 嵌套IF/ELSE中的命令行集

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=

我只需要在某些条件下初始化多个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

我试图抛出随机延迟展开,但没有任何结果。我开始认为这是不可能的,我应该做一些肮脏的转到。

在执行对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。