사용자 경로를 편집하는 배치 파일

사용자 경로를 편집하는 배치 파일

이 포럼의 다른 게시물에서 사용자 경로를 편집하는 배치 파일을 얻었지만 해당 경로에 Windows 7 컴퓨터에서 일반적으로 사용되는 프로그램 파일(x86) 항목이 포함되어 있으면 폭탄이 터집니다. 이러한 항목과 작동하도록 스크립트를 수정하는 방법에 대한 아이디어가 있습니까?

@echo OFF

set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)

if defined ValueName (

  set newPath=%ValueValue%;C:\bin

  reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f

  set path=%path%;C:\bin

) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)

답변1

)in이 Program Files (x86)IF 문에서 코드 블록을 조기에 닫으므로 스크립트가 실패합니다 .

코드가 아직 그다지 강력하지는 않지만 해당 문제를 해결할 수 있는 빠르고 더러운 수정 사항은 다음과 같습니다.

@echo OFF
set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path
FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)
if not defined ValueName (
  @echo %KEY_NAME%\%VALUE_NAME% not found.
  exit /b
)
set newPath=%ValueValue%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f
set path=%path%;C:\bin

관련 정보