ํ•ด๋ฒ„๋‹ˆ 2025. 4. 1. 18:40
๋ฐ˜์‘ํ˜•
@echo off
setlocal enabledelayedexpansion

:: UTF-8 ์ธ์ฝ”๋”ฉ ์„ค์ •
chcp 65001

:: ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ๋ณ€๊ฒฝ
cd /d D:\Projects\MyProject

:: ๋กœ๊ทธ ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ •
set LOGFILE=%USERPROFILE%\Desktop\myproject_build.log

:: ๋กœ๊ทธ ํŒŒ์ผ์— ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๊ธฐ๋ก
echo.>> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
echo %date% %time% >> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"

:: SVN ์—…๋ฐ์ดํŠธ ์‹คํ–‰ ๋ฐ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก
echo Running SVN update... >> "%LOGFILE%"
svn update >> "%LOGFILE%" 2>&1

:: Maven ๋นŒ๋“œ ์‹คํ–‰ ๋ฐ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก (ํ…Œ์ŠคํŠธ ์ƒ๋žต)
echo Running Maven build... >> "%LOGFILE%"
mvn clean package -DskipTests -Dfile.encoding=UTF-8 -e -fae >> "%LOGFILE%" 2>&1

:: ๋นŒ๋“œ ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ ํ›„ ์ด๋ฒคํŠธ ๋กœ๊ทธ์— ๊ธฐ๋ก
if %ERRORLEVEL% equ 0 (
    echo Build completed successfully. >> "%LOGFILE%"
    powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 100 -EntryType Information -Message 'Build completed successfully.'" >> "%LOGFILE%" 2>&1
) else (
    echo Build failed. >> "%LOGFILE%"
    powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 101 -EntryType Error -Message 'Build failed.'" >> "%LOGFILE%" 2>&1
)

echo Build process finished. >> "%LOGFILE%"

 

 

 

๋ถ„์„

@echo off

๋ฐฐ์น˜ ํŒŒ์ผ ์‹คํ–‰ ์‹œ ๋ช…๋ น์–ด๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •

 

setlocal enabledelayedexpansion

๋ณ€์ˆ˜ ๊ฐ’์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์—ฐ๋œ ํ™•์žฅ์„ ํ™œ์„ฑํ™”

 

chcp 65001

UTF-8 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ ํŒŒ์ผ์ด๋‚˜ ์ฝ˜์†”์—์„œ ํ•œ๊ธ€์ด ๊นจ์ง€์ง€ ์•Š๋„๋ก ์„ค์ •

 

cd /d D:\Projects\MyProject

์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ D:\Projects\MyProject๋กœ ๋ณ€๊ฒฝ

 

set LOGFILE=%USERPROFILE%\Desktop\myproject_build.log

๋กœ๊ทธ ํŒŒ์ผ์„ ์‚ฌ์šฉ์ž ๋ฐ”ํƒ•ํ™”๋ฉด์— ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •

 

echo.>> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"
echo %date% %time% >> "%LOGFILE%"
echo ========================= >> "%LOGFILE%"

๋นŒ๋“œ ๋กœ๊ทธ์˜ ๊ฐ€๋™์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ—ค๋” ์ถ”๊ฐ€

=========================
2025-03-28 12:34:56.78
=========================

์ด๋Ÿฐ ์‹์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

 

svn update >> "%LOGFILE%" 2>&1

SVN ์ €์žฅ์†Œ์—์„œ ์ตœ์‹  ์ฝ”๋“œ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก

2>&1 : ํ‘œ์ค€ ์—๋Ÿฌ ์ถœ๋ ฅ(2๋ฒˆ)์„ ํ‘œ์ค€ ์ถœ๋ ฅ(1๋ฒˆ)์œผ๋กœ ํ•ฉ์นœ๋‹ค๋Š” ๋“ฏ 

 

mvn clean package -DskipTests -Dfile.encoding=UTF-8 -e -fae >> "%LOGFILE%" 2>&1

Maven์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ๋Š” ์ƒ๋žต (-DskipTests)

ํ…Œ์ŠคํŠธ ์ƒ๋žต : ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ค์„œ ๋นŒ๋“œ๋งŒ ํ•˜๊ธฐ๋„ ํ•˜๊ณ , ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๊ตณ์ด ํ•„์š” ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ถ”๊ฐ€๋˜์–ด์žˆ๋Š” ๊ฒƒ.

-e : ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒ์„ธํ•œ ๋กœ๊ทธ ์ถœ๋ ฅ

-fae : ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ์—๋„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณ„์† ์ง„ํ–‰

 

if %ERRORLEVEL% equ 0 (...) else (...)

%ERRORLEVEL% ๊ฐ’์ด 0์ด๋ฉด ๋นŒ๋“œ ์„ฑ๊ณต, 0์ด ์•„๋‹ˆ๋ฉด ์‹คํŒจ๋กœ ํŒ๋‹จ.

๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด๋Š” 'mvn clean package'์ธ๋ฐ ์„ฑ๊ณตํ•˜๋ฉด 0, ์‹คํŒจํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜๋จ.

 

1 : ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜(์˜ˆ: ํŒŒ์ผ ์—†์Œ, ์‹คํ–‰ ์‹คํŒจ)

2 : ์ž˜๋ชป๋œ ๋ช…๋ น์–ด ์ธ์ˆ˜

100 : Maven ๋นŒ๋“œ ์‹คํŒจ (์ผ๋ฐ˜์ ์œผ๋กœ 100)

101 : ํŠน์ •ํ•œ ์˜ค๋ฅ˜ ์ƒํ™ฉ(์˜ˆ: ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜)

 

powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 100 -EntryType Information -Message 'Build completed successfully.'" >> "%LOGFILE%" 2>&1

์„ฑ๊ณต ์‹œ : ์œˆ๋„์šฐ ์ด๋ฒคํŠธ ๋กœ๊ทธ(Application ๋กœ๊ทธ)์— ๋นŒ๋“œ ์„ฑ๊ณต ๊ธฐ๋ก

 

powershell -Command "Write-EventLog -LogName Application -Source 'MyProject Maven Build & Deploy' -EventId 101 -EntryType Error -Message 'Build failed.'" >> "%LOGFILE%" 2>&1

 

์‹คํŒจ ์‹œ : ์ด๋ฒคํŠธ ๋กœ๊ทธ์— ๋นŒ๋“œ ์‹คํŒจ ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก

 

echo Build process finished. >> "%LOGFILE%"

์ „์ฒด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก 

 

 

 

 

enabledelayedxpansion ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

setlocal enabledelayedexpansion

๋ฐฐ์น˜ ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ€์ˆ˜(%๋ณ€์ˆ˜๋ช…%)์€ ํ•œ ๋ฒˆ ๊ฐ’์ด ์„ค์ •๋˜๋ฉด ๊ทธ ์ค„์ด ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€๋งŒ ์œ ์ง€๋จ.

ํ•˜์ง€๋งŒ ์œ„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด !๋ณ€์ˆ˜๋ช…! ํ˜•์‹์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ

 

๊ธฐ๋ณธ์ ์ธ ๋ณ€์ˆ˜ ์‚ฌ์šฉ

@echo off
set count=0
for /L %%i in (1,1,5) do (
    set /a count+=1
    echo count = %count%   :: ์—ฌ๊ธฐ์„  ํ•ญ์ƒ 0์œผ๋กœ ์ถœ๋ ฅ๋จ
)

 

๊ฒฐ๊ณผ

 

count = 0
count = 0
count = 0
count = 0
count = 0

 

 

!๋ณ€์ˆ˜!๋ฅผ ์‚ฌ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ

@echo off
setlocal enabledelayedexpansion
set count=0
for /L %%i in (1,1,5) do (
    set /a count+=1
    echo count = !count!   :: 1๋ถ€ํ„ฐ 5๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๋ฉฐ ์ถœ๋ ฅ๋จ
)

 

๊ฒฐ๊ณผ

 

count = 1
count = 2
count = 3
count = 4
count = 5

 

๋ฐ˜์‘ํ˜•