2014-09-25 4 views
0

제가하고있는 프로젝트는 GDAL 라이브러리를 필요로합니다. 모든 것들을 건너 뛰고 Java 용 C- 바인딩이기 때문에 약간의 복잡한 설치가 필요합니다. 어쨌든 비교적 쉽게 미리 컴파일 된 버전을 찾았습니다. 유일한 것은 사용자가 일부 환경 변수를 설정해야한다는 것입니다.프로그래밍 방식으로 프로그램에 필요한 환경 변수를 설정하십시오.

그렇게하기는 쉽지만 프로세스가 사람들을 혼란스럽게 만들 수 있으므로 간단하게 유지할 수 있습니다. Windows에서 간단하게 "setup.bat"을 실행하면됩니다. 이것은 내가 지금까지 얻은 것입니다 :

set "root=%~dp0" 
set "gdalpath=%root%gdal-x64-11.1\" 

setx PATH "%PATH%;%gdalpath%" 
setx GDAL_DATA "%gdalpath%gdal-x64-11.1\gdal-data\" 
setx GDAL_DRIVER_PATH "%gdalpath%gdal-x64-11.1\gdalplugins\" 
setx PROJ_LIB "%gdalpath%gdal-x64-11.1\projlib\" 

PATH을 제외하고는 거의 잘 작동합니다. 두 가지가 있는데, 하나는 시스템을위한 것이고 다른 하나는 사용자 환경 변수를위한 것입니다. 간단히 %PATH%을 호출하면 모두 합쳐 지지만, setx PATH으로 쓰면 사용자에게 모두 PATH이 기록됩니다. 그들은 다음과 같이 배치 파일을 실행 한 후

before

: after

이 예에서 보존 않는 "

예를 들어 변수는 전에처럼 보였다 경우 C : \ PHP \ "를 추가하고 끝에 GDAL 경로를 추가하십시오. 내 생각에 작품이 더 많든 적든간에 그것이 무엇을해야하는지 생각하지만, 나는 그것을 더 깨끗하게 가지고 싶습니다. 그렇다면 사용자 PATH 변수 만 잡고 추가 할 수있는 방법이 있습니까?

+0

가능한 경우는, 오히려 setx''보다'pathman'를 사용합니다. 'pathman'은 PATH 조작을 위해 특별히 고안되었습니다. –

답변

1

(/ k 스위치와 같이) 게시하기 전에 도움이되는 페이지에 setx /?을 입력 했습니까? Plus setx는 현재 콘솔 창을 수행하지 않습니다. 파일 레지스트리를 읽으려면 경로

@echo off 
echo. 
echo PathFind - Finds the first file in in a path 
echo ======== = ===== === ===== ==== == == = ==== 
echo. 
echo Searching for %1 in %path% 
echo. 
set a=%~$PATH:1 
If "%a%"=="" (Echo %1 not found) else (echo %1 found at %a%) 

에 이미있는 경우

테스트합니다.

@for /f "skip=2 tokens=3" %%A in ('Reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v AlwaysShowMenus') do @if "%%A"=="0x1" echo Matches 

Pause 

사용자 영구 변수가 여기에 저장됩니다.

HKEY_CURRENT_USER\Environment 

VBScript WSH는 환경에 훨씬 더 세분화 된 액세스를 제공합니다.

도움말에서.

환경 속성에는 WshEnvironment 개체 (환경 변수 컬렉션)가 들어 있습니다. strType이 제공되면 환경 변수가 시스템, 사용자, 휘발성 또는 프로세스 중 가능한 값으로 상주하는 위치를 지정합니다.

다음 코드는 시스템 환경 변수 NUMBER_OF_PROCESSORS를 검색합니다.

비주얼 베이직 스크립트 코드 복사

Set WshShell = WScript.CreateObject("WScript.Shell") 

Set WshSysEnv = WshShell.Environment("SYSTEM") 

WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS") 
+0

아니지만 문제는 그것을 설정하는 것 같지 않습니다, 그것은 그 라인에 % PATH %를 추가하는 것은 사용자와 시스템 모두를 위해 모든 것을 반환한다는 것입니다.배치 코딩에 익숙하지 않아서 현재 PATH 값을 호출하는 방법이 있지만 사용자가 아닌 시스템에 대해 설정된 값만 가져 오는 것이 맞는지 짐작할 수 있습니다. – wowohweewah

+0

아니요.하지만 레지스트리를 읽고 쓸 수는 있습니다. 일부 코드를 게시 할 때 답변을 참조하십시오. – Noodles

+0

감사합니다. 읽기 작업 부분에서 "Access Denied"가 인쇄되었으므로이 작업 컴퓨터에서는 레지스트리에 대한 직접 액세스 권한이 거부 된 것 같습니다. 그러나 지금은 제대로 된 것 같습니다. VBScript가 더 좋은 방법 일 수 있습니다. – wowohweewah

관련 문제