이 포럼의 다른 게시물에서 사용자 경로를 편집하는 배치 파일을 얻었지만 해당 경로에 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