# 배치파일 관리자 권한 실행

배치 파일을 더블클릭하게 되면 기본적으로 관리자 권한으로 실행되지 않습니다. 배치 파일을 선택 후 마우스 우측 버튼 눌러 관리자 권한으로 실행 메뉴를 선택하거나, 관리자 권한으로 실행된 cmd창에서 배치 파일을 실행하는 방법도 있습니다.

이러한 부분이 번거롭다고 생각되면 더블클릭만으로 배치 파일의 내용을 관리자 권한으로 실행 될 수 있도록 배치 파일을 작성할 수 있습니다.

# 코드

윈도우에서 배치파일을 관리자 권한으로 실행하는 방법과 함께 실행된 경로까지 유지되는 방법도 함께 알아 보도록 하겠습니다.

우선 관리자 권한으로 실행되었는지 확인 후 배치파일을 재실행하는 코드 입니다. CURRENT_DIR 변수를 통해 현재 경로를 저장하는 이유는 powershell을 통해 cmd.exe를 실행 할 때 현재 경로를 파라미터로 넘겨주어 재 실행 되었을 때 현재 경로를 유지되게 하기 위함 입니다.

기본적으로 이러한 작업을 하지 않으면, C:\Windows\System32에서 배치파일을 실행하게 됩니다.

@echo off

:: 현재 디렉터리 저장 (초기화)
set "CURRENT_DIR=%cd%"

:: 관리자 권한 확인
net session >nul 2>&1
if %errorlevel% neq 0 (
    :: 관리자 권한이 아닌 경우 관리자 권한으로 재실행
    powershell -Command "Start-Process -FilePath '%~f0' -ArgumentList '%CURRENT_DIR%' -Verb RunAs"
    exit /b
)

:: 관리자 권한으로 실행된 경우
if "%~1"=="" goto :eof
cd /d "%~1"

:: 필요한 작업을 이 부분에 추가 하시면 됩니다.
:: 실행 후 창이 자동으로 닫히려면, 아래 pause를 제거해주세요.
echo CUR_PATH: %cd%
pause

아래 코드는 배치파일이 실행될 때 파라미터를 체크해서 아무것도 없을 경우 즉, 관리자 권한으로 실행되지 않을 경우 파일의 끝으로 이동하여 종료하는 코드입니다. 파라미터가 있을 경우 이 값을 참조하여 디덱토리를 이동합니다.

if "%~1"=="" goto :eof
cd /d "%~1"

Leave a comment