programing

영구 환경 변수를 cmd에서 설정합니다.실행

starjava 2023. 4. 17. 21:14
반응형

영구 환경 변수를 cmd에서 설정합니다.실행

다른 윈도 머신에서 환경변수를 설정해야 하는데 "내 컴퓨터"의 속성 화면에서 수동으로 변경할 필요가 없습니다.

커맨드 라인에서 배치 파일을 사용하고 싶습니다.set을 사용하면 명령 창에서 호출할 프로세스의 변수만 변경되는 것으로 알고 있습니다.

반드시 설정하고 싶기 때문에 나중에 새로운 프로세스를 실행할 때 설정한 새로운 설정이 사용됩니다.명령줄에서 그렇게 할 수 있는 방법이 있나요?

SETX 명령어('x' 접미사 참조)를 사용하여 cmd 창을 닫은 후에도 지속되는 변수를 설정합니다.

예를 들어 env var foo 값을 "bar"로 설정하려면 다음 절차를 수행합니다.

setx foo bar /m

사용법을 인쇄하면 표시되는 '메모'를 읽어볼 만합니다.setx /?), 특히 다음과 같습니다.

  1. 로컬 시스템에서 이 도구로 작성 또는 변경된 변수는 향후 명령어창에서는 사용할 수 있지만 현재 CMD.exe 명령어창에서는 사용할 수 없습니다.

  2. 리모트 시스템에서는 이 툴로 작성 또는 변경된 변수는 다음 로그온 세션에서 사용할 수 있습니다.

PowerShell의 [환경]:: SetEnvironmentVariable 명령어.

환경변수에 관한 MSDN 매뉴얼에서는 다음 절차를 설명합니다.

시스템 환경변수를 프로그래밍 방식으로 추가하거나 변경하려면 HKEY_LOCAL_MACHINE\System\에 추가합니다.CurrentControlSet\Control\세션 매니저\환경 레지스트리 키를 누른 다음 LParam이 "Environment" 문자열로 설정된 WM_SETTING CHANGE 메시지를 브로드캐스트합니다.이를 통해 셸 등의 응용 프로그램이 업데이트를 선택할 수 있습니다.

물론 이 작업을 수행하려면 관리자 권한이 필요합니다.Windows 배치에서 Windows 메시지를 브로드캐스트하는 방법을 모르기 때문에 이를 수행하려면 작은 프로그램을 작성해야 합니다.

:: Sets environment variables for both the current `cmd` window 
::   and/or other applications going forward.
:: I call this file keyz.cmd to be able to just type `keyz` at the prompt 
::   after changes because the word `keys` is already taken in Windows.

@echo off

:: set for the current window
set APCA_API_KEY_ID=key_id
set APCA_API_SECRET_KEY=secret_key
set APCA_API_BASE_URL=https://paper-api.alpaca.markets

:: setx also for other windows and processes going forward
setx APCA_API_KEY_ID     %APCA_API_KEY_ID%
setx APCA_API_SECRET_KEY %APCA_API_SECRET_KEY%
setx APCA_API_BASE_URL   %APCA_API_BASE_URL%

:: Displaying what was just set.
set apca

:: Or for copy/paste manually ...
:: setx APCA_API_KEY_ID     'key_id'
:: setx APCA_API_SECRET_KEY 'secret_key'
:: setx APCA_API_BASE_URL   'https://paper-api.alpaca.markets'

실제로 SET TEST_VARILE=값은 현재 프로세스에서만 작동합니다.SETX필수 항목입니다.사용자 수준에서 환경 변수를 영구적으로 저장하는 빠른 예제입니다.

  1. cmd(단위). 아직 적용되지 않았습니다(echo %TEST_VARIABLE%드라마들.%TEST_VARIABLE%,
  2. 빠른 확인: cmd를 엽니다.echo %TEST_VARIABLE%드라마들.etc.
  3. GUI 체크:시스템 속성 -> 상세 -> 환경 변수 -> 사용자 변수 -> 값이 있는 가변 TEST_VARILE이 표시됩니다.etc.

VBScript(.vbs)를 사용한 예

Sub sety(wsh, action, typey, vary, value)
  Dim wu
  Set wu = wsh.Environment(typey)
  wui = wu.Item(vary)
  Select Case action
    Case "ls"
      WScript.Echo wui
    Case "del"
      On Error Resume Next
      wu.remove(vary)
      On Error Goto 0
    Case "set"
      wu.Item(vary) = value
    Case "add"
      If wui = "" Then
        wu.Item(vary) = value
      ElseIf InStr(UCase(";" & wui & ";"), UCase(";" & value & ";")) = 0 Then
        wu.Item(vary) = value & ";" & wui
      End If
    Case Else
      WScript.Echo "Bad action"
  End Select
End Sub

Dim wsh, args
Set wsh = WScript.CreateObject("WScript.Shell")
Set args = WScript.Arguments
Select Case WScript.Arguments.Length
  Case 3
    value = ""
  Case 4
    value = args(3)
  Case Else
    WScript.Echo "Arguments - 0: ls,del,set,add; 1: user,system, 2: variable; 3: value"
    value = "```"
End Select
If Not value = "```" Then
  ' 0: ls,del,set,add; 1: user,system, 2: variable; 3: value
  sety wsh, args(0), args(1), UCase(args(2)), value
End If

언급URL : https://stackoverflow.com/questions/5898131/set-a-persistent-environment-variable-from-cmd-exe

반응형