2009-04-20 11 views
5

다른 프로그램을 호출하는 WSH jscript 파일에서 환경 변수를 어떻게 설정할 수 있습니까? 여기에 감소 된 테스트 케이스의 :자바 스크립트에서 환경 변수 설정하기

envtest.js 
---------- 
var oShell = WScript.CreateObject("WScript.Shell"); 
var oSysEnv = oShell.Environment("SYSTEM"); 
oSysEnv("TEST_ENV_VAR") = "TEST_VALUE"; 
oExec = oShell.Run("envtest.bat", 1, true);  

envtest.bat 
----------- 
set 
pause 

내가 변수의 목록에 TEST_ ENV _var을 볼 것으로 예상하지만,이 아니다. 뭐가 문제 야?

편집 :

누군가가 작업 코드 샘플을 생산할 수 있다면, 정답 등이 표시됩니다. :)

+0

당신이 악의적 인 일을 하려는지 궁금합니다. –

답변

6

을 볼 수있는 자식 프로세스를 필요로하는 경우 당신은 아마 프로세스를 원한다 (시스템, 사용자, 휘발성, 및 프로세스), 그러나 그것은이다 프로세스 실행 중. 전체 시스템 변수는 실행되는 프로세스에 할당됩니다. 그래서, 당신의 자식 프로세스도 같은 변수 세트를 가지고있었습니다.

코드 샘플이 정상적으로 작동합니다. 변수를 SYSTEM 환경에 추가합니다.

따라서 변수를 시스템뿐만 아니라 프로세스에도 설정해야합니다.

다음은 코드입니다.

var oShell = WScript.CreateObject("WScript.Shell"); 
var oSysEnv = oShell.Environment("SYSTEM"); 
oSysEnv("TEST1") = "TEST_VALUE"; 
var oSysEnv = oShell.Environment("PROCESS"); 
oSysEnv("TEST1") = "TEST_VALUE"; 
oExec = oShell.Run("envtest.bat", 1, true); 

일단 시스템 변수를 생성했습니다.

현재 프로세스에 대해 새로 생성 된 변수를 할당합니다. 따라서 "SET"명령이 실행되는 동안 하위 프로세스가 해당 변수를 가져올 수 있습니다.

죄송합니다.

+0

감사합니다. –

+0

환경 변수 값을 검색하는 데 사용할 수있는 것이 있는지 질문하기 위해 [다른 질문] (http://stackoverflow.com/questions/4957251/javascript-how-to-retrieve-an-environment-variable)을 열었습니다. 너 뭔가에 대해 알고 있니? –

0

시스템 환경 변수가 표시됩니다. 나는 당신이 그들을 수정할 수있는 권한이 없다고 생각합니다. 이것을 사용자 환경 변수로 변경해보십시오.

또한 Environment()의 인수가 대소 문자를 구분하는지 여부를 알지 못합니다. MS의 설명서는 "SYSTEM" 대신 "System"을 사용합니다. 차이를 만들 수도 있지만 확실하지 않습니다.

2

가 4 "컬렉션"은 단지 문제는 코드에없는 변수

관련 문제