๋๋ ํ ๋ฆฌ/ํ์ผ ์กฐ์, Robocopy, tasklist/taskkill ํ๋ก์ธ์ค ์ ์ด, netstat ํฌํธ ๊ฒ์, findstr ํ์ดํ๋ผ์ธ ๋ฐ ๋ฐฐ์น(.bat) ์คํฌ๋ฆฝํธ ํต์ฌ
## 1. ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ ํ์ & ์ด๋
```bat
REM [1] ๋๋ผ์ด๋ธ ๋ฐ ๋๋ ํ ๋ฆฌ ์ด๋ (/d ์ต์
์ ๋๋ผ์ด๋ธ ๊ฐ ์ด๋ ํ์)
cd /d D:\Workspaces\Projects
cd .. :: ์์ ๋๋ ํ ๋ฆฌ ์ด๋
cd %USERPROFILE% :: ์ฌ์ฉ์ ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ (C:\Users\username)
REM [2] ํ์ผ ๋ฐ ํด๋ ๋ชฉ๋ก ์กฐํ (dir)
dir :: ๊ธฐ๋ณธ ๋ชฉ๋ก ์ถ๋ ฅ
dir /b :: ํ์ผ/ํด๋ ์ด๋ฆ๋ง ๊ฐ๋จํ ์ถ๋ ฅ (Bare format)
dir /s :: ํ์ ๋๋ ํ ๋ฆฌ ํ์ผ๊น์ง ์ฌ๊ท์ ์ผ๋ก ๋ชจ๋ ์ถ๋ ฅ
dir /a:h :: ์จ๊น ํ์ผ(Hidden)๋ง ์ถ๋ ฅ
dir /o:d :: ์์ ๋ ์ง(Date) ์ค๋ฆ์ฐจ์ ์ ๋ ฌ (/o:-d ๋ ์ต์ ์)
dir /b /s *.log :: ํ์ฌ ํด๋ ๋ฐ ํ์ ๋ชจ๋ *.log ํ์ผ ์ ๋๊ฒฝ๋ก ๊ฒ์
REM [3] ํด๋ ์์ฑ ๋ฐ ์ญ์
mkdir my-folder :: ํด๋ ์์ฑ (md ๋์ผ)
mkdir -p dir1\dir2\dir3 :: CMD์์๋ mkdir dir1\dir2\dir3 ์ ์ค๊ฐ ํด๋ ์๋ ์์ฑ
rmdir /s /q my-folder :: ํด๋์ ๋ด๋ถ ๋ชจ๋ ํ์ผ ํ์ธ ์์ด ๊ฐ์ ์ญ์ (rd ๋์ผ)
```
## 2. ํ์ผ ๋ณต์ฌ, ์ด๋, ์ญ์ & Robocopy
```bat
REM [1] ๊ธฐ๋ณธ ํ์ผ ์กฐ์
copy file.txt backup.txt :: ๋จ์ผ ํ์ผ ๋ณต์ฌ
copy /y src.txt dest.txt :: ๋ฎ์ด์ฐ๊ธฐ ํ์ธ ์์ด ์ฆ์ ๋ณต์ฌ (/y)
move /y file.txt D:\backup\ :: ํ์ผ ์ด๋
del /f /q /s *.tmp :: ํ์ ํด๋์ ๋ชจ๋ .tmp ํ์ผ ๊ฐ์ ๋ฌด์ ์ญ์
ren old_name.txt new_name.txt :: ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ
REM [2] ๊ฐ๋ ฅํ ํด๋ ๋๊ธฐํ ๋ฐ ๋์ฉ๋ ๋ณต์ฌ (Robocopy ๊ถ์ฅ)
REM /E: ๋น์ด์๋ ํด๋ ํฌํจ ํ์ ์ ์ฒด ๋ณต์ฌ, /MIR: ์๋ณธ๊ณผ ๋์ ์๋ฒฝ ๋ฏธ๋ฌ๋ง(์ญ์ ๋๊ธฐํ ํฌํจ)
robocopy C:\Source D:\Backup /E /MT:8 /R:1 /W:1
robocopy C:\Source D:\Backup /MIR
```
## 3. ๋คํธ์ํฌ ์ง๋จ & ํฌํธ ์ ๊ฒ
```bat
REM [1] IP ์ ๋ณด ๋ฐ DNS ์บ์
ipconfig :: ๊ธฐ๋ณธ ๋คํธ์ํฌ ์ด๋ํฐ IP ์กฐํ
ipconfig /all :: MAC ์ฃผ์, DNS ์๋ฒ, DHCP ์์ธ ์กฐํ
ipconfig /flushdns :: DNS ์บ์ ์ฆ์ ์ด๊ธฐํ
REM [2] ํฌํธ ์ ๊ฒ & ์ฌ์ฉ ์ค์ธ ํ๋ก์ธ์ค PID ์ฐพ๊ธฐ (๊ฐ๋ฐ ํ์!)
netstat -ano | findstr :8080 :: 8080 ํฌํธ๋ฅผ ์ ๊ฒ ์ค์ธ ์ฐ๊ฒฐ ๋ฐ PID ํ์ธ
netstat -ano | findstr LISTENING :: ๋๊ธฐ(Listen) ์ค์ธ ๋ชจ๋ ํฌํธ ๋ชฉ๋ก
REM [3] ๋คํธ์ํฌ ํ, ๊ฒฝ๋ก ์ถ์ , ํต์ ํ์ธ
ping 8.8.8.8 -t :: ๋ฌดํ ํ ํ
์คํธ (Ctrl + C ๋ก ์ค์ง)
tracert google.com :: ํจํท ๋๋ฌ ๊ฒฝ๋ก ์ถ์
nslookup api.github.com :: ๋๋ฉ์ธ IP ์กฐํ
curl -I https://example.com :: HTTP ์๋ต ํค๋ ์กฐํ (Win 10/11 ๊ธฐ๋ณธ ํ์ฌ)
```
## 4. ํ๋ก์ธ์ค ๋ฐ ์๋์ฐ ์๋น์ค ๊ด๋ฆฌ
```bat
REM [1] ํ๋ก์ธ์ค ๋ชฉ๋ก ์กฐํ (tasklist)
tasklist :: ์ ์ฒด ์คํ ์ค์ธ ํ๋ก์ธ์ค ๋ชฉ๋ก
tasklist | findstr /i node :: node ํ๋ก์ธ์ค ํํฐ๋ง (๋์๋ฌธ์ ๋ฌด์)
tasklist /fi "memusage gt 100000" :: ๋ฉ๋ชจ๋ฆฌ 100MB ์ด์ ํ๋ก์ธ์ค ํํฐ๋ง
REM [2] ํ๋ก์ธ์ค ๊ฐ์ ์ข
๋ฃ (taskkill)
taskkill /f /im node.exe :: ํ๋ก์ธ์ค ์ด๋ฆ์ผ๋ก ๊ฐ์ (/f) ์ผ๊ด ์ข
๋ฃ
taskkill /f /pid 1234 :: ํน์ PID ํ๋ก์ธ์ค ๊ฐ์ ์ข
๋ฃ
taskkill /f /t /pid 1234 :: ํ๋ก์ธ์ค ๋ฐ ๋ชจ๋ ์์ ํ๋ก์ธ์ค ํธ๋ฆฌ ์ผ๊ด ์ข
๋ฃ (/t)
REM [3] Windows ์๋น์ค(Service) ์ ์ด (๊ด๋ฆฌ์ ๊ถํ ํ์)
sc query wuauserv :: ํน์ ์๋น์ค ์ํ ์กฐํ
sc start wuauserv :: ์๋น์ค ์์
sc stop wuauserv :: ์๋น์ค ์ค์ง
```
## 5. ํ
์คํธ ๊ฒ์ (findstr) & ํ์ดํ๋ผ์ธ
```bat
REM [1] ํ
์คํธ ๊ฒ์ (findstr - Linux์ grep ์ญํ )
REM /i: ๋์๋ฌธ์ ๋ฌด์, /r: ์ ๊ท์ ์ฌ์ฉ, /n: ๋ผ์ธ ๋ฒํธ ํ์, /s: ํ์ ํด๋ ์ฌ๊ท
findstr /i "error" server.log
findstr /i /n "exception" *.log
findstr /s /i "DB_PASSWORD" *.properties
REM [2] ์ถ๋ ฅ ๋ฆฌ๋ค์ด๋ ์
& ํด๋ฆฝ๋ณด๋ ๋ณต์ฌ
dir /b > list.txt :: ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ (Overwrite)
echo "log message" >> log.txt :: ํ์ผ ๋์ ์ด์ด์ฐ๊ธฐ (Append)
ipconfig | clip :: ๋ช
๋ น์ด ๊ฒฐ๊ณผ๋ฅผ ์๋์ฐ ํด๋ฆฝ๋ณด๋๋ก ์ง์ ๋ณต์ฌ (Ctrl+V ๊ฐ๋ฅ)
type nul > empty.txt :: 0๋ฐ์ดํธ ๋น ํ์ผ ์์ฑ (Linux touch ๋์ฒด)
type file.txt :: ํ์ผ ๋ด์ฉ ์ฝ์ ์ถ๋ ฅ (Linux cat ๋์ฒด)
```
## 6. ํ๊ฒฝ๋ณ์ (Environment Variables) ์ ์ด
```bat
REM [1] ํ์ฌ ์ธ์
์์ ํ๊ฒฝ๋ณ์ (CMD ์ข
๋ฃ ์ ์ฌ๋ผ์ง)
echo %PATH% :: ํน์ ํ๊ฒฝ๋ณ์ ๊ฐ ์ถ๋ ฅ
set PORT=3000 :: ํ๊ฒฝ๋ณ์ ์ค์
set PORT= :: ํ๊ฒฝ๋ณ์ ์ญ์
set :: ๋ฑ๋ก๋ ๋ชจ๋ ํ๊ฒฝ๋ณ์ ๋ชฉ๋ก ํ์ธ
REM [2] ์๊ตฌ ์์คํ
/์ฌ์ฉ์ ํ๊ฒฝ๋ณ์ ๋ฑ๋ก (setx)
setx MY_ENV "production" :: ํ์ฌ ์ฌ์ฉ์ ๋ ๋ฒจ ์๊ตฌ ๋ฑ๋ก
setx JAVA_HOME "C:\jdk-21" /m :: ์์คํ
์ ์ฒด(์ ์ญ) ์๊ตฌ ๋ฑ๋ก (/m, ๊ด๋ฆฌ์ ๊ถํ ํ์)
REM [3] ์คํ ํ์ผ ๊ฒฝ๋ก ์กฐํ (Linux which ๋์ฒด)
where git
where java
where npm
```
## 7. ๋ฐฐ์น ํ์ผ (.bat / .cmd) ๊ธฐ์ด ๋ฌธ๋ฒ
```bat
@echo off
REM ๋ฐฐ์น ํ์ผ ์ ๋์๋ ๋ณดํต ๋ช
๋ น์ด ์ถ๋ ฅ์ ์จ๊ธฐ๋ @echo off ์ ์ธ
:: [1] ๋ณ์ ์ ์ธ ๋ฐ ์ฐ์ฐ
set APP_NAME=MyService
set /a COUNT=1 + 2
echo Starting %APP_NAME% (Count: %COUNT%)
:: [2] ์คํฌ๋ฆฝํธ ์คํ ๊ฒฝ๋ก ๊ธฐ์ค ๋๋ ํ ๋ฆฌ (%~dp0)
cd /d "%~dp0"
:: [3] ์กฐ๊ฑด๋ฌธ (IF / ELSE)
if exist "config.json" (
echo Config found.
) else (
echo Config missing!
exit /b 1
)
:: [4] ์ด์ ๋ช
๋ น ์ฑ๊ณต ์ฌ๋ถ ๊ฒ์ฌ (%ERRORLEVEL%)
copy file.txt dest.txt > nul 2>&1
if %ERRORLEVEL% equ 0 (
echo Copy Success.
) else (
echo Copy Failed with code %ERRORLEVEL%.
)
:: [5] ๋ฐ๋ณต๋ฌธ (FOR ๋ฌธ)
for /r %%i in (*.log) do (
echo Found log: %%i
)
```
## 8. ์์คํ
์ํ, ๋์คํฌ & ๋จ์ถํค ์นํธ
```bat
REM [1] ์์คํ
๋ฐ ๋์คํฌ ๊ฒ์ฌ
systeminfo :: OS ๋น๋, ์ค์น ๋ ์ง, ํ๋์จ์ด ์คํ ์์ธ
sfc /scannow :: ์๋์ฐ ์์คํ
๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ ๋ฐ ์๋ ๋ณต๊ตฌ (๊ด๋ฆฌ์)
chkdsk C: /f :: C ๋๋ผ์ด๋ธ ์ค๋ฅ ๊ฒ์ฌ ๋ฐ ์์ (๊ด๋ฆฌ์)
cls :: ํ๋ฉด ๊นจ๋์ด ์ง์ฐ๊ธฐ (Clear screen)
exit :: ํ๋กฌํํธ ์ฐฝ ๋ซ๊ธฐ
REM [2] ํธ๋ฆฌํ ๋จ์ถํค
REM F7: ๋ช
๋ น ํ์คํ ๋ฆฌ ํ์
์ฐฝ (ํค๋ณด๋๋ก ์ด์ ๋ช
๋ น ์ ํ)
REM F8: ์
๋ ฅํ ๋ฌธ์๋ก ์์ํ๋ ์ด์ ๋ช
๋ น ๊ฒ์ ์ํ
REM Tab: ํ์ผ/ํด๋ ์๋ ์์ฑ
REM Ctrl + C: ์คํ ์ค์ธ ํ๋ก์ธ์ค ์ฆ๊ฐ ๊ฐ์ ์ธํฐ๋ฝํธ
```
์๊ฒฌ ๋ฐ ์ง๋ฌธ
0์์ง ๋ฑ๋ก๋ ์๊ฒฌ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋๊ธ์ ๋จ๊ฒจ๋ณด์ธ์!
๋๊ธ ์์
๋๊ธ ์ญ์