簡體   English   中英

批處理腳本 - 如果尚未設置/定義,則設置/定義環境變量

[英]Batch script - Set/Define environment variable if not already set/defined

我需要調用批處理腳本作為

SetEnvironmentVariableIfNotSet.bat environment_variable_name <value>

從另一個腳本或命令行。

我絕不是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"

被叫時,做我需要的:

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"

在這里要求更好/最佳的解決方案。 這個對我來說當然看起來很難看。

您可以使用If DefinedIf Not Defined

@Echo Off
If "%~1"=="" GoTo :EOF
If Defined %~1 (
    Echo='%~1' already defined with value
    Call Echo=%%%~1%%
    Pause
    GoTo :EOF
)
If "%~2"=="" GoTo :EOF
Echo='%~1' undefined, defining with value
Echo=%~2
Set "%~1=%~2"
Pause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM