728x90
:-----------------------------------------------------------------------------------------------------------------------------
REM Check administrator privileges
REM ref : https://bebhionn.tistory.com/52
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM If error flag is set, we don't have admin rights
if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    REM When running with admin rights, default path changes, so change it to bat file path (%~dp0)
    CD /D "%~dp0"
:-----------------------------------------------------------------------------------------------------------------------------

참고 : https://bebhionn.tistory.com/52

 

Batch 파일 관리자 권한으로 실행 코드

batch 파일을 만들때 오른쪽 -> 관리자 권한으로 실행 으로 안하고 바로 실행해도 관리자 권한을 얻어오고 싶을 때 사용하는 코드입니다. 제일 앞에 기입해야 하며 @echo off가 있을 시 @echo off 뒤에

bebhionn.tistory.com

 

728x90

'Script > bat' 카테고리의 다른 글

Bat - MSBuild/VsDevCmd의 경로를 가져오기.  (0) 2025.04.13
728x90

CI/CD를 동작시킬 때 MSBuild를 사용하는 경우가 있을 것이다.

이 때 개발환경과 CI/CD환경이 다를 것이고 경로도 다를 것이다.

그래서 Build.bat 파일과 같이 bat파일로 동작시키는 경우가 있다.

 

MSBuild의 경로 가져오기

:-----------------------------------------------------------------------------------------------------------------------------
REM Find Visual Studio 2022 installation
set MSBUILD_PATH=

REM Try to find Visual Studio installation using vswhere
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
    set "MSBUILD_PATH=%%i\MSBuild\Current\Bin\MSBuild.exe"
    goto :found_msbuild
)

:found_msbuild
if "%MSBUILD_PATH%"=="" (
    echo Error: MSBuild.exe not found.
    echo Please install Visual Studio 2022 and try again.
    pause
    exit /B 1
)
:-----------------------------------------------------------------------------------------------------------------------------

:-----------------------------------------------------------------------------------------------------------------------------
echo Using MSBuild at: %MSBUILD_PATH%

REM "%MSBUILD_PATH%" Engine.sln -p:Configuration="Debug" -p:Platform=Win32
REM "%MSBUILD_PATH%" Engine.sln -p:Configuration="Release" -p:Platform=Win32

"%MSBUILD_PATH%" Engine.sln -p:Configuration="Debug" -p:Platform=x64
REM "%MSBUILD_PATH%" Engine.sln -p:Configuration="Release" -p:Platform=x64
:-----------------------------------------------------------------------------------------------------------------------------

 

VsDevCmd의 경로 가져오기

나의 경우에는 Visual Studio 2022를 사용하고 있기 때문에 VS2022_PATH라고 했을 뿐이다.

이렇게하면 설치된 최신 버전의 Visual Studio 의 VsDevCmd.bat 경로를 가져올 것이다.

:-----------------------------------------------------------------------------------------------------------------------------
echo.
echo [Execute VsDevCmd.bat]
REM Find Visual Studio 2022 installation
set VS2022_PATH=

REM Try to find Visual Studio installation using vswhere
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
    set "VS2022_PATH=%%i\Common7\Tools\VsDevCmd.bat"
    goto :found_vs
)

:found_vs
if "%VS2022_PATH%"=="" (
    echo Error: Visual Studio 2022 not found.
    echo Please install Visual Studio 2022 and try again.
    pause
    exit /B 1
)

echo Using Visual Studio 2022 at: %VS2022_PATH%
call "%VS2022_PATH%"
:-----------------------------------------------------------------------------------------------------------------------------
728x90

'Script > bat' 카테고리의 다른 글

Bat - 관리자 권한으로 실행하기  (0) 2025.04.13
728x90
728x90
728x90

간단한 프로젝트에서는 ini를 많이 사용하는데, 모든 함수를 일일히 만들기는 힘들기(귀찮기...) 때문에, CodeProject에서 많이 사용한 CIni를 사용하면 좋다.


이 클래스를 이용하면 읽기, 쓰기, 수정등의 함수들을 제공하므로 사용법만 익히면 된다.


CIni : https://www.codeproject.com/Articles/5401/CIni


CIni.h

CIni.cpp



사용법




위 사용 방법에는 없지만 bool, char, 문자열 배열 등 많은 기능이 더 있다.

사용 방법은 위의 3개와 거의 비슷하기 때문에 그냥 쓰면 될 것 같다.

728x90

'Script > ini' 카테고리의 다른 글

ini - 설정파일(ini) 사용하기  (0) 2016.03.03
728x90

프로그램 제작시 어느정도 규모를 가추게 되면 설정해야 할 것들이 많아지게 된다.

그 중에 너무나 자주 건들어야하는 몇가지 옵션들이 존재한다.

 

가령 DirectX나 OpenGL사용시에 카메라의 위치나 방향 또는 창의 크기가 그것일 수 있고 또는 지금 테스트 중인 맵파일을 변경 한더던지 초당프레임 제한이라던지 등등이 있을 수 있다.

 

이때 소스를 직접 건들어 수정하게 되면 너무나 복잡한 과정이 기다리고 있다.

그래서 보통 좀 더 중규모 게임 제작에는 스크립트나 XML파일들을 사용하기도 한다.

 

하지만 아주 작은 규모의 게임이나 또는 소규모 툴 제작에 있어서는 스크립트나 XML파일을 읽고 수정하는데 필요한 라이브러리 조차 붙이는게 귀찮을 수 있는데 그럴때 표준 설정파일(*.ini) 포맷을 쓰면 매우 유용하다.

 

이 포맷을 읽는데에는 별도의 라이브러리가 필요 없으며 지금 사용하는 C언어 툴이 표준 C++ 라이브러리를 준수하는 툴이라면 충분하다.

 

텍스트 파일을 만들 수 있는 툴을 열고(NotePade 또는 메모장) 아래의 형식을 지켜 입력 해준다.

[AppName]

KeyName = ReturnValue

그후에 확장자 명을 ini로 변경해준다.

 

우리가 제작 중인 소스에는 아래의 함수를 사용해준다.

GetPrivateProfileString(AppName,KeyName,Default,ReturnValue,Size,FileName)

AppName : 읽고자하는 INI파일의 AppName을 적는다.(문자열)

KeyName : 읽고자하는 ReturnValue의 KeyName을 적는다.(문자열)

Default : KeyName으로 설정값을 가져오는데 실패하면 기본적으로 설정해주는 Value값을 적는다.(문자열)

ReturnValue : INI에 있는 설정값중 AppName,KeyName에 해당하는 값을 읽어온다.(문자열)

Size : ReturnValue의 길이(크기)값을 적되 길이보다 크게 적어도 상관없다.(숫자)

FileName : INI파일명. 풀경로로 적되 현재폴더에 따라서 읽고 싶다면 "./Option.ini" 이런식을 따른다.

 

파일명 "Option.ini"

[Camera]

PosX = 0.0

PosY = 0.0

PosZ = -25.0

[FrameCheck]

FrameOnSec = 20

 

소스부분

//환경설정

GetPrivateProfileString( "Camera", "PosX", NULL, szData, 512, pFileName );

vecPos.x = atof(szData);

GetPrivateProfileString( "Camera", "PosY", NULL, szData, 512, pFileName );

vecPos.y = atof(szData);

GetPrivateProfileString( "Camera", "PosZ", NULL, szData, 512, pFileName );

vecPos.z = atof(szData);

GetPrivateProfileString( "FrameCheck", "FrameOnSec", NULL, szData, 512, pFileName );

CFrameCheck::GetInstance()->SetFrameSec(atoi(szData));

 

신경 써야 할 것은 읽은 정보자체가 모두 문자열이기 때문에 숫자(정수,부동소숫점) 형태로 다시 바꿔줘야 할 필요도 있다.

 

출처 : http://neosafe.blog.me/130045067419

728x90

'Script > ini' 카테고리의 다른 글

ini - CIni Class (ini 클래스)  (0) 2017.09.04

+ Recent posts