본문 바로가기
컴퓨터

.bat 파일 읽는 방법

by 로맨틱스터디 2025. 9. 30.
728x90
반응형

.bat 파일은 **Windows 배치 파일(Batch file)**이에요.

쉽게 말하면 명령어를 순서대로 실행하는 텍스트 스크립트입니다.


🔹 1. .bat 파일 특징

  • 확장자: .bat 또는 .cmd
  • 내용: Windows 명령어(cmd.exe)
  • 실행 시: 명령 프롬프트(cmd)가 열리면서 스크립트 안의 명령어 순서대로 실행
  • 텍스트 기반이므로, 메모장 등으로 열어서 읽고 편집 가능

🔹 2. 읽는 방법

방법 1: 메모장 등 텍스트 편집기로 열기

  1. 파일 우클릭 → 편집 또는 메모장으로 열기
  2. 내부 명령어 확인 가능

예시 .bat 내용:

 
@echo off
echo 안녕하세요
pause
  • @echo off → 명령어 자체는 출력하지 않고 결과만 보여줌
  • echo 안녕하세요 → 화면에 “안녕하세요” 출력
  • pause → 사용자가 키를 누를 때까지 대기

방법 2: 실행 후 출력 확인

  • 파일 더블클릭명령 프롬프트 실행
  • 실행 결과를 확인 가능

⚠️ 주의: 모르는 배치 파일을 바로 실행하지 마세요

  • 악성 명령어(삭제, 포맷, 원격 연결 등)가 있을 수 있음
  • 항상 메모장으로 열어 내용을 확인한 후 실행

🔹 3. 배치 파일 분석 방법

  1. 텍스트 편집기로 열기명령어 확인
  2. cmd 명령어 이해하기echo, set, start, call, pause
  3. 필요한 경우 명령어 하나씩 주석 처리(@rem 또는 ::) → 안전하게 테스트

즉, LOL_OPGG_Observer_spectate.bat 파일도 메모장으로 열면 내용 읽을 수 있고, 명령어를 분석해 어떤 작업을 하는지 확인할 수 있어요.

 

728x90
Windows 배치 파일(.bat)에서 echo off를 안 하면 명령어 자체도 화면에 출력됩니다.

🔹 1. 기본 동작

예를 들어, 이런 파일이 있다고 해봅시다:

echo Hello World
pause

실행 시 출력
C:\Users\You>echo Hello World
Hello World

C:\Users\You>pause
Press any key to continue . . .


보이죠? 명령어(echo Hello World, pause) 자체가 먼저 출력되고,

그 다음 실행 결과가 나옵니다.

🔹 2. @echo off 사용
@echo off
echo Hello World
pause


echo off → 명령어를 화면에 출력하지 않음

@ → 현재 줄의 명령어 자체도 출력하지 않음

실행 시 출력:

Hello World
Press any key to continue . . .


즉, 명령어는 숨기고 실행 결과만 보여줌

🔹 3. 요약
설정	출력 내용
echo on (기본)	명령어 + 결과 모두 출력
echo off	결과만 출력
@echo off	현재 줄 포함, 결과만 깔끔하게 출력

 

1️⃣ 명령어와 실행 결과 구분

배치 파일에 이렇게 써 있다고 합시다:

 
echo Hello
  • 명령어: echo Hello → 컴퓨터에게 “Hello를 출력하라”라고 지시하는 코드
  • 실행 결과: Hello → 실제 화면에 출력되는 텍스트

즉, 명령어와 결과는 별개입니다.

  • 명령 프롬프트(cmd)에서 그냥 실행하면, 보통 이렇게 보이죠:
C:\Users\You>echo Hello ← 이게 명령어 자체
Hello ← 실행 결과

2️⃣ echo off의 역할

 
echo off
echo Hello
pause
  • echo off → 이후 줄의 명령어를 화면에 출력하지 말라는 의미
  • 단, echo off 줄 자체는 아직 적용되지 않았기 때문에 화면에 출력됨
 
C:\Users\You>echo offecho off 자체는 아직 보임
C:\Users\You>echo Hello ← 이후 줄부터 명령어 출력 안 됨
Hello ← 실행 결과만 보임
 
C:\Users\You>pause
Press any key to continue . . .

 

즉, **“명령어 자체를 화면에 안 보여주겠다”**가 핵심이에요.


3️⃣ @echo off의 역할

 
@echo off
echo Hello
pause
  • @ → 현재 줄(echo off)도 출력하지 말라는 뜻
  • 이후 모든 줄은 이미 echo off 상태이므로 명령어가 화면에 안 나옵니다
  • 실행 화면:
 
Hello
Press any key to continue . . .

 

✅ 요약:

설정 화면에 명령어 표시 실행 결과 표시
그냥 echo off 첫 줄 echo off는 보임 결과만 보임
@echo off 첫 줄도 안 보임 결과만 보임

즉, C:\Users\You>echo Hello 같은 건 “명령어 자체가 화면에 출력된 것”이고,
@echo off를 쓰면 이런 명령어 자체는 안 보여주고 결과만 깔끔하게 출력하게 됩니다.

 


 

rem OP.GG Spectate
SETLOCAL enableextensions enabledelayedexpansion 
@echo off

echo -----------------------
echo Spectate by op.gg
echo -----------------------

set RADS_PATH="C:\Riot Games\League of Legends"
echo ===================
echo KR: LOL Cookie
echo EN: Try to your custom path of LOL direcotry..
echo ===================
if exist "D:\Riot Games\League of Legends" (
	SET RADS_PATH=D:\Riot Games\League of Legends)
cls

if exist "%RADS_PATH%\Game" (
	cd /d "!RADS_PATH!\Config"
	for /F "delims=" %%a in ('find "        locale: " LeagueClientSettings.yaml') do set "locale=%%a"
	for /F "tokens=2 delims=: " %%a in ("!locale!") do set "locale=%%a"

	SET RADS_PATH="!RADS_PATH!\Game"
	@cd /d !RADS_PATH!

	if exist "League of Legends.exe" (
		@start "" "League of Legends.exe" "spectator spectator.kr.lol.riotgames.com:80 RCsHjhYT8ItEzdn1+syWKC2sOIkVASpf 4394565040 KR" "-UseRads" "-Locale=!locale!" "-GameBaseDir=.."
		goto :eof
	)
)

if exist "%RADS_PATH%\RADS" (
	SET RADS_PATH="!RADS_PATH!\RADS"
	@cd /d !RADS_PATH!

	@cd /d "!RADS_PATH!\projects"
	for /d %%D in (league_client_*) do (
	    for /F "tokens=3,4 delims=_ " %%a in ("%%~nxD") do (
	        set locale=%%a_%%b
	    )
	)

	for /l %%a in (1,1,100) do if "!RADS_PATH:~-1!"==" " set RADS_PATH=!RADS_PATH:~0,-1!
	@cd /d "!RADS_PATH!\solutions\lol_game_client_sln\releases"

	set /a v0=0, v1=0, v2=0, v3=0
	set init=0
	for /d %%A in ("!RADS_PATH!\solutions\lol_game_client_sln\releases\*") do (
		set currentDirectory=%%~nxA

		for /F "tokens=1,2,3,4 delims=." %%i in ("!currentDirectory!") do (
			set /a test=%%i*1, test2=%%j*1, test3=%%k*1, test4=%%l*1

			if !init! equ 0 (
				set /a init=1, flag=1
			) else (
				set flag=0

				if !test! gtr !v0! (
					set flag=1
				) else (
					if !test2! gtr !v1! (
						set flag=1
					) else (
						if !test3! gtr !v2! (
							set flag=1
						) else (
							if !test4! gtr !v3! (
								set flag=1
							)
						)
					)
				)
			)

			if !flag! gtr 0 (
				set /a v0=!test!, v1=!test2!, v2=!test3!, v3=!test4!
			)
		)
	)

	if !init! equ 0 goto cannotFind
	set lolver=!v0!.!v1!.!v2!.!v3!

	@cd /d "!RADS_PATH!\solutions\lol_game_client_sln\releases\!lolver!\deploy"
	if exist "League of Legends.exe" (
		@start "" "League of Legends.exe" "spectator spectator.kr.lol.riotgames.com:80 RCsHjhYT8ItEzdn1+syWKC2sOIkVASpf 4394565040 KR" "-UseRads" "-Locale=!locale!" "-GameBaseDir=.."
		goto :eof
	)
)

echo ===================
echo KR: LOL 
echo EN: Cannot found LOL directory path for automatic. Please see our spectate help page: http://www.op.gg/help/observer
echo ===================
@pause

:eof

 

rem OP.GG Spectate를 배치 파일(.bat) 문맥에서 풀어볼게요. 😄


1️⃣ rem이란?

  • rem = remark (주석)
  • 배치 파일에서 설명이나 메모를 적을 때 사용
  • 실행 시 아무 작업도 하지 않고, 화면에도 출력되지 않음

예시:

rem 이 파일은 OP.GG Spectate를 위한 배치 파일입니다
echo Hello
  • 실행 결과:
 
Hello
  • rem으로 시작한 줄은 무시됨 → 배치 파일에 대한 설명 용도

Tip: ::도 배치 파일에서 주석처럼 쓸 수 있어요.


2️⃣ spectate란?

  • 영어 단어 spectate = 관전하다, 지켜보다
  • 게임 문맥에서는 다른 사람의 게임을 관전하는 기능을 의미
  • OP.GG에서 “Spectate” 기능 = 다른 플레이어의 리그 오브 레전드(LoL) 게임을 관전

즉, 배치 파일 이름과 주석을 합치면:

 
rem OP.GG Spectate
  • 의미: “이 배치 파일은 OP.GG의 Spectate 기능과 관련된 것임”
  • 배치 파일 실행에는 아무 영향 없음, 설명용 주석

✅ 정리

용어 의미
rem remark, 주석 → 실행 안 됨
spectate 관전하다, 게임 관전 기능
rem OP.GG Spectate “이 파일은 OP.GG Spectate용”이라는 설명

 

배치 파일은 리그 오브 레전드(LoL) OP.GG Spectate 기능을 실행하기 위한 배치 파일이에요.
“SETLOCAL”이 특히 궁금하실 것 같아서, 전체 흐름과 함께 단계별로 설명해드릴게요.


1️⃣ SETLOCAL이란?

 
SETLOCAL enableextensions enabledelayedexpansion
  • SETLOCAL → 배치 파일 안에서 설정한 환경 변수와 옵션이 블록 안에서만 유효하게 만드는 명령어
  • enableextensions배치 명령 확장 기능 활성화 (for, if 등 고급 기능 사용 가능)
  • enabledelayedexpansion지연된 변수 확장을 활성화. !VAR! 구문을 통해 루프나 조건문 안에서 변수 값을 실시간으로 업데이트 가능

요약: SETLOCAL을 쓰면, 배치 파일에서 변수와 옵션이 로컬 스코프처럼 작동해서 안전하게 사용할 수 있어요.


2️⃣ 배치 파일 전체 흐름

① 기본 설정 및 안내 메시지

 
@echo off
echo -----------------------
echo Spectate by op.gg
echo -----------------------
  • 화면에 안내 메시지를 출력
  • @echo off → 명령어 자체는 숨기고 출력 결과만 보여줌

② LoL 설치 경로 설정

set RADS_PATH="C:\Riot Games\League of Legends"
if exist "D:\Riot Games\League of Legends" (
	SET RADS_PATH=D:\Riot Games\League of Legends
)
  • 기본 설치 경로를 C:\Riot Games\League of Legends로 설정
  • 만약 D: 드라이브에 설치되어 있다면, 경로를 변경
더보기

이제 set RADS_PATH와 RADS가 뭔지 구체적으로 설명해드릴게요. 😄


1️⃣ set RADS_PATH란?

 
set RADS_PATH="C:\Riot Games\League of Legends"
  • set → 배치 파일에서 환경 변수(variable)를 정의할 때 사용하는 명령어
  • RADS_PATH → 변수 이름
  • "C:\Riot Games\League of Legends" → 변수 값

즉, RADS_PATH라는 이름의 변수LoL 설치 경로를 저장한 것

  • 이후 배치 파일에서 !RADS_PATH!를 사용하면 항상 지정된 경로를 참조할 수 있음

예:

cd /d "!RADS_PATH!\Config"

설치 경로 안의 Config 폴더로 이동


2️⃣ RADS가 뭔가?

  • RADS = Riot Application Deployment System
  • Riot Games가 LoL 클라이언트를 설치하고 업데이트하는 파일 구조 및 배포 시스템 이름
  • 과거 LoL 설치 구조에서 RADS 폴더 안에 게임 데이터, 패치, 솔루션 프로젝트 등이 들어있었음

배치 파일에서 RADS_PATH를 쓰는 이유:

  1. LoL 설치 폴더가 기본 경로가 아닐 수 있기 때문에 경로를 변수로 저장
  2. RADS 구조 안에서 최신 릴리즈, 실행 파일을 찾아서 실행

3️⃣ 요약

항목 설명
set 배치 파일에서 변수 정의
RADS_PATH LoL 설치 폴더 경로를 담는 변수
RADS Riot Application Deployment System, 옛날 LoL 설치 구조
!RADS_PATH! 변수 값 참조, 예: C:\Riot Games\League of Legends

즉, 배치 파일은 RADS_PATH 변수를 통해 설치 폴더를 유동적으로 관리하고,

RADS 구조 안에서 최신 실행 파일을 찾아 OP.GG Spectate 모드를 실행하게 되는 거예요.

 


 

1️⃣ cd란?

  • cd = change directory
  • 현재 작업 디렉터리(폴더)를 변경하는 명령어
  • 배치 파일이나 명령 프롬프트(cmd)에서 사용

2️⃣ 기본 사용법

예시 1: 폴더 이동

 
cd C:\Riot Games\League of Legends
  • 현재 디렉터리를 C:\Riot Games\League of Legends로 이동
  • 이후 명령어는 이 폴더를 기준으로 실행

예시 2: 상위 폴더로 이동

 
cd ..
  • 현재 폴더의 한 단계 상위 폴더로 이동

예시 3: 드라이브 변경과 이동

 
cd /d D:\Games\LoL
  • /d 옵션 → 다른 드라이브로 이동 가능
  • 예: 현재가 C: 드라이브여도 D: 드라이브로 이동 후 폴더 변경

3️⃣ 배치 파일에서 사용된 예

 
cd /d "!RADS_PATH!\Config"
  • /d → RADS_PATH가 다른 드라이브에 있어도 이동 가능
  • !RADS_PATH! → 이전에 설정한 LoL 설치 경로
  • 결과: LoL 설치 경로 안의 Config 폴더로 이동

이후 for나 start 같은 명령어가 이 디렉터리를 기준으로 실행됨


4️⃣ 요약

명령어 의미
cd change directory, 현재 폴더 이동
cd .. 상위 폴더 이동
cd /d 드라이브:\폴더 드라이브 변경과 동시에 폴더 이동

즉, 배치 파일에서 cd를 쓰는 이유는 특정 폴더로 이동해서 그 위치를 기준으로 파일을 찾거나 실행하기 위해서입니다.

 


③ Game 폴더 확인 후 관전 실행

 
if exist "%RADS_PATH%\Game" (
	cd /d "!RADS_PATH!\Config"
	...
	if exist "League of Legends.exe" (
		@start "" "League of Legends.exe" "spectator ..."
		goto :eof
	)
)
  • Game 폴더가 존재하면 Config 폴더로 이동
  • LeagueClientSettings.yaml에서 locale (언어/서버 지역) 가져옴
  • League of Legends.exe를 spectator 모드실행
더보기

goto :eof는 배치 파일에서 자주 쓰이는 명령어인데, 쉽게 말하면 **“이 배치 파일 실행을 종료하라”**라는 의미예요. 😄


1️⃣ 기본 의미

  • goto배치 파일 안에서 다른 위치(label)로 이동
  • :eof → 특별한 레이블, “End Of File” 의미
  • 따라서 goto :eof → 배치 파일의 끝으로 이동실행 종료

2️⃣ 사용 예시

 
echo Hello
goto :eof
echo World
  • 실행 결과:
 
Hello
  • 이유: goto :eof 이후 줄은 실행되지 않음 (echo World는 건너뜀)

3️⃣ 배치 파일에서의 쓰임

배치 파일 안에서 조건문을 쓰다 보면, 특정 조건이 만족되면 파일 실행을 종료하고 싶을 때 사용됩니다.

예시:

 
if exist "League of Legends.exe" (
    start "" "League of Legends.exe"
    goto :eof
)
  • LoL 실행 파일이 존재하면 실행
  • 그 후 배치 파일 나머지 코드는 실행하지 않고 바로 종료

4️⃣ 요약

명령어 의미
goto 레이블 배치 파일 내 해당 레이블로 이동
:eof 배치 파일 끝을 의미하는 특별 레이블
goto :eof 파일 끝으로 이동실행 종료

즉, goto :eof는 배치 파일 내에서 “여기서 끝내라”라는 종료 명령어라고 이해하면 돼요.


④ RADS 폴더 확인 및 최신 버전 탐색

if exist "%RADS_PATH%\RADS" (
	...
	for /d %%A in ("!RADS_PATH!\solutions\lol_game_client_sln\releases\*") do (
		...
	)
)
  • RADS 폴더(옛날 LoL 설치 구조) 확인
  • releases 폴더 안에서 가장 최신 버전 찾아 League of Legends.exe 실행

⑤ 실행 실패 시 안내

 
echo ===================
echo KR: LOL 
echo EN: Cannot found LOL directory path for automatic. Please see our spectate help page: http://www.op.gg/help/observer
@pause
  • LoL 경로를 찾지 못하면 안내 메시지 출력
  • 사용자가 문제를 확인하도록 일시정지

3️⃣ 핵심 포인트

항목 설명
rem OP.GG Spectate 주석, 실행과 무관, 설명용
SETLOCAL enableextensions enabledelayedexpansion 변수와 옵션을 로컬 스코프로 제한, !VAR! 사용 가능
@echo off 명령어 숨기고 결과만 출력
set RADS_PATH=... LoL 설치 경로 지정
if exist ... 경로 유무 확인 후 조건별 실행
for /F
for /d
폴더와 파일 반복, 최신 버전 탐색
start "..." "League of Legends.exe" "spectator ..." 게임 실행, 관전 모드 활성화

🔹 추가 설명: enabledelayedexpansion

  • 일반 변수 %VAR%루프 안에서는 값이 바로 반영되지 않을 수 있음
  • 지연 확장 !VAR!루프 안에서도 값이 즉시 업데이트
  • 예:
set count=0
for %%i in (1 2 3) do (
    set /a count=!count!+1
    echo !count!
)
  • 출력: 1,2,3 (지연 확장이 없으면 0,0,0이 출력될 수도 있음)

즉, 이 배치 파일은 LoL 설치 경로를 찾고, 최신 버전 클라이언트를 찾아 OP.GG 관전 모드로 게임을 실행하는 과정을 자동화한 스크립트입니다.

더보기

1️⃣ 코드

 
set count=0
for %%i in (1 2 3) do (
    set /a count=!count!+1
    echo !count!
)

2️⃣ 각 줄 의미

① set count=0

  • count라는 변수(variable)0으로 초기화
  • 나중에 루프 안에서 값을 하나씩 증가시킬 예정

② for %%i in (1 2 3) do ( ... )

  • for 루프: 괄호 안 명령어를 반복 실행
  • (1 2 3) → 루프를 3번 반복, 각각 %%i에 1, 2, 3이 순서대로 들어감
  • %%i루프 변수 (배치 파일 안에서는 %% 사용, 명령 프롬프트에서 직접 실행하면 %i)

③ set /a count=!count!+1

  • set /a → 수식 계산 명령어
  • !count! → **지연 확장(delayed expansion)**을 통해 루프 안에서 최신 변수 값 사용
  • 의미: count = count + 1루프 한 번 돌 때마다 1씩 증가

🔹 주의: %count% 대신 !count!를 쓰는 이유

  • 배치 파일에서 일반 %count%는 루프 시작 시 값이 고정
  • enabledelayedexpansion 설정 시 !count! 사용 → 루프 안에서도 값이 즉시 반영

④ echo !count!

  • 현재 루프에서 증가된 count 값을 화면에 출력

3️⃣ 실행 흐름

루프 반복 count 계산 출력
1 0 + 1 = 1 1
2 1 + 1 = 2 2
3 2 + 1 = 3 3
  • 따라서 화면 출력:
 
1 2 3

4️⃣ 핵심 포인트

  1. set /a → 산술 계산용
  2. !변수! → 지연 확장 사용, 루프 안에서도 변수 값 즉시 반영
  3. for %%i in (...) do (...) → 지정한 값만큼 반복 실행
  4. 루프 내에서 변수 값을 누적해서 사용 가능

 

1️⃣ 배치 파일에서 루프 변수

 
for %%i in (1 2 3) do (
    echo %%i
)
  • **i**가 실제 변수 이름입니다.
  • **%%**는 배치 파일(.bat)에서 루프 변수임을 표시하는 문법

✅ 핵심

상황 문법 의미
배치 파일(.bat) 안 %%i 루프 변수 이름: i
명령 프롬프트(cmd) 직접 입력 %i 루프 변수 이름: i

즉, **배치 파일 안에서는 반드시 %%를 붙여야 하고, 실제 변수 이름은 i**예요.


예시: 반복 출력

 
for %%i in (A B C) do (
    echo %%i
)
  • 출력 결과:
 
A B C
  • 루프 변수 이름은 i이고, 값이 A → B → C로 바뀌면서 실행

2️⃣ 요약

  • 루프 변수 이름 = i
  • 배치 파일에서 쓰는 문법 = %%i
  • cmd에서 직접 쓰는 문법 = %i
  • 루프 안에서 %%i를 통해 각 반복 값에 접근

 

이제 in (A B C)가 무엇인지 차근차근 설명해드릴게요. 😄


1️⃣ 기본 구조

배치 파일의 for 문은 이렇게 생겼어요:

 
for %%i in (A B C) do (
    echo %%i
)
  • %%i → 루프 변수
  • in (A B C)루프를 돌 “값들의 집합”을 지정
  • do (...)각 값에 대해 실행할 명령어 블록

즉, (A B C) 안의 값들이 루프 반복 시 %%i에 순서대로 들어가는 값들입니다.


2️⃣ 동작 예시

 
for %%i in (A B C) do (
    echo %%i
)

실행 흐름

반복 %%i 값 출력
1 A A
2 B B
3 C C
  • (A B C) 안에 있는 값들한 개씩 루프 변수에 넣고 반복

3️⃣ 숫자나 파일에도 가능

숫자

 
for %%i in (1 2 3 4 5) do (
    echo %%i
)
  • 반복 값 = 1,2,3,4,5
  • 출력:
1
2
3
4
5

파일

for %%f in (*.txt) do (
    echo %%f
)
  • 현재 폴더의 모든 .txt 파일 이름을 %%f에 넣고 반복
  • 각 파일 이름 출력

4️⃣ 요약

문법 의미
for %%i in (값1 값2 값3) (값1 값2 값3) 안의 값들을 하나씩 루프 변수 %%i에 넣고 반복
루프 변수 %%i → 배치 파일 안에서는 %% 필요
반복 실행 do (...) 블록 안의 명령어 실행

즉, **in (A B C) = 루프가 돌 값들의 목록(list)**이라고 이해하면 됩니다.


 

for /F "delims=" %%a in ('find "        locale: " LeagueClientSettings.yaml') do set "locale=%%a"

 

배치 파일에서 YAML 설정 파일을 읽어서 locale 값을 가져오는 코드예요. 하나씩 천천히 풀어서 설명해드릴게요. 😄


1️⃣ locale이란?

  • locale = 지역/언어 설정
  • 컴퓨터, 프로그램, 게임에서 언어, 국가, 시간대, 숫자/날짜 형식 등을 구분할 때 사용
  • 예:
    • en_US → 영어, 미국
    • ko_KR → 한국어, 한국

배치 파일에서는 LoL 클라이언트가 어떤 서버/언어로 실행될지를 locale 값으로 결정합니다.


2️⃣ 코드 분석

 
for /F "delims=" %%a in ('find " locale: " LeagueClientSettings.yaml') do set "locale=%%a"

① for /F

  • /F → 명령어 출력, 파일, 문자열 등을 한 줄씩 읽어서 처리
  • 즉, 일반 for값 목록을 반복하지만, /F텍스트 라인 단위 반복

② "delims="

  • delims = delimiter, 구분자
  • 기본적으로 /F는 공백(space)나 탭(tab)을 기준으로 단어를 나누어 첫 번째 토큰만 가져옴
  • delims= → 구분자를 없앰 → 줄 전체 통째로 읽음

③ %%a

  • 루프 변수 이름 = a
  • 배치 파일 안에서는 반드시 %% 사용

④ in ('find " locale: " LeagueClientSettings.yaml')

  • in ('명령어')명령어 출력 결과를 루프의 입력으로 사용
  • 여기서 find " locale: " LeagueClientSettings.yaml"
    • YAML 파일에서 locale:이 포함된 줄을 검색
    • 공백까지 정확히 지정해서 해당 줄만 찾음

예시 YAML 파일:

region: KR
    locale: ko_KR
autoUpdate: true
  • find 명령어 결과:
locale: ko_KR

⑤ do set "locale=%%a"

  • 루프 변수 %%a검색된 줄 전체가 들어감 → locale 변수에 저장
  • 결과: locale = locale: ko_KR

나중에 다른 줄에서 token을 나눠서 실제 값(ko_KR)만 추출합니다.


3️⃣ 요약

코드 조각 의미
for /F 파일이나 명령어 출력 결과를 줄 단위로 반복 처리
"delims=" 공백 구분 없이 줄 전체를 읽음
%%a 루프 변수 이름
in ('find ...') 명령어 출력 결과를 루프 입력으로 사용
set "locale=%%a" 검색한 줄을 locale 변수에 저장

즉, 이 코드는 LoL 설정 파일에서 locale 줄을 찾아 변수에 담아두는 역할이에요.

 


 

 

배치 파일과 OP.GG 관전 기능 동작 구조를 이해하면 바로 이해할 수 있어요. 단계별로 설명할게요.


1️⃣ .bat 파일이 하는 일

  • LOL_OPGG_Observer_spectate.bat는 LoL 클라이언트를 “관전 모드(spectate)”로 실행하도록 자동화하는 스크립트예요.
  • 실제로는 LoL 클라이언트가 설치되어 있어야 하고, 서버에서 관전용 정보를 받아야 합니다.
  • 즉, 배치 파일이 없으면자동으로 경로 찾아서, 최신 버전 클라이언트 실행 + 관전 연결은 못 하지만, 수동으로 LoL 클라이언트를 열고 관전 모드 명령어를 입력하면 관전 자체는 가능합니다.
    • 배치 파일은 편의용, 자동화용인 거예요.

2️⃣ 숫자가 섞인 파일 이름

예시:

LOL_OPGG_Observer_4394565040_spectate.bat
  • 숫자 4394565040 → 관전 세션 고유 ID / 임시 토큰 / 해시값
  • OP.GG에서 관전 요청을 보낼 때 서버에서 발급하는 임시 세션 ID와 연결
  • 각 관전 시도마다 다른 ID가 발급되므로, 파일 이름도 달라짐

의미

  • OP.GG가 자동으로 배치 파일을 생성
  • 사용자가 실행하면:
    1. 해당 세션용 .bat 실행
    2. 최신 LoL 클라이언트를 찾아서
    3. spectator <서버주소> <토큰> 명령어로 연결
  • 사용 후 파일은 보통 임시 파일이며, 삭제해도 다시 생성 가능

3️⃣ 왜 다운로드 폴더에 여러 파일이 생기는가?

  • 각 관전 요청마다 OP.GG에서 배치 파일 생성
  • 예: 친구 게임, 다른 시간대 게임 등
  • 파일 이름 중간 숫자(hash/session ID)가 달라서 여러 개 생기는 것처럼 보임
  • 실제로는 각 배치 파일 특정 관전 세션과 연결되어 있음

4️⃣ 요약

질문
배치 파일 없으면 관전 못 하나? 수동으로 LoL 클라이언트를 열고 관전 모드 실행 가능. 배치 파일은 자동화 편의용
숫자 해시는 뭐야? 관전 세션 고유 ID / 토큰, 각 게임마다 달라짐
왜 여러 파일이 다운로드에 생기나? OP.GG가 관전 요청마다 임시 배치 파일 생성, 숫자가 달라서 여러 개처럼 보임

즉, 배치 파일은 OP.GG가 관전을 편하게 하기 위해 자동 생성하는 스크립트이고, 관전 자체는 클라이언트에서 직접 실행해도 가능합니다.

728x90
반응형