小编Cri*_*Arg的帖子

批处理脚本 - 设置/定义环境变量(如果尚未设置/定义)

我需要一个批处理脚本来调用

SetEnvironmentVariableIfNotSet.bat environment_variable_name <value>
Run Code Online (Sandbox Code Playgroud)

从另一个脚本或命令行。

我绝不是 Windows 批处理脚本方面的专家,但通过反复试验并将不同的东西拼凑在一起,到目前为止我已经想出了这个:

@setlocal EnableDelayedExpansion
@if "!%1!"=="" (
  echo '%1' undefined. Defining with value
  echo    %2
  endlocal DisableDelayedExpansion
  goto :define_variable
) else (
  echo '%1' already defined with value
  echo    !%1!
  endlocal DisableDelayedExpansion
  goto :eof
)

:define_variable
@set "%1=%2"
Run Code Online (Sandbox Code Playgroud)

当被调用时,做我需要的事情:

C:\>call DefEnvVarIfNotDef.bat ASD "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
'ASD' undefined. Defining with value
   "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
C:\>echo %ASD%
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
Run Code Online (Sandbox Code Playgroud)

在这里寻求更好/最佳的解决方案。这对我来说确实很难看。

windows cmd batch-file delayedvariableexpansion

5
推荐指数
1
解决办法
4042
查看次数