모니터 속 빛나는 폴더에 큰 사진이 들어가 작은 파일로 나오는 장면

모니터 속 빛나는 폴더에 큰 사진이 들어가 작은 파일로 나오는 장면

폴더에 이미지만 넣으면 자동으로 압축·변환되는 윈도우 로컬 자동화 폴더 만들기

BoniK's WORKS 2026년 11월 5일

블로그나 웹사이트, 쇼핑몰 등을 운영하면서 매번 이미지 크기를 줄이고 웹 친화적인 포맷으로 변환하느라 지치신 적은 없나요? 이미지 하나를 올릴 때마다 변환 프로그램을 열고, 품질을 고르고, 저장 위치를 정하는 일은 사소하지만 반복되면 꽤 귀찮습니다.

이 글을 읽고 나면, 폴더에 이미지를 넣기만 하면 자동으로 압축·변환되는 윈도우 자동화 폴더를 만들 수 있습니다. 파워셸 감시 스크립트와 부팅 시 자동 실행 설정까지 순서대로 정리했습니다.

자동화 폴더의 동작 원리

구조는 단순합니다. 세 개의 폴더가 역할을 나눕니다.

  • 입력 폴더: 여기에 이미지를 넣습니다.
  • 출력 폴더: 변환된 이미지가 자동으로 저장됩니다.
  • 원본 보관 폴더: 변환이 끝난 원본이 여기로 이동합니다.

파워셸 스크립트가 입력 폴더를 계속 감시하다가 새 파일이 들어오면 변환 도구를 실행합니다. 사람이 개입할 단계는 이미지를 넣는 것뿐입니다.

준비물

먼저 이미지 변환 도구와 폴더를 준비합니다.

  1. ImageMagick을 설치합니다. 명령 프롬프트에서 다음 명령어로 설치할 수 있습니다.
winget install ImageMagick.ImageMagick
  1. 적당한 위치에 폴더 세 개를 만듭니다. 예: D:\AutoImage\입력, D:\AutoImage\출력, D:\AutoImage\원본보관

파워셸 감시 스크립트 만드는 방법

메모장을 열고 다음 스크립트를 작성합니다. 파일 이름은 watch.ps1로 하고, D:\AutoImage\watch.ps1 경로에 저장합니다.

$inputFolder = "D:\AutoImage\입력"
$outputFolder = "D:\AutoImage\출력"
$backupFolder = "D:\AutoImage\원본보관"
$maxWidth = 0
$forceWidth = 0
$Quality = 85

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $inputFolder
$watcher.Filter = "*.*"
$watcher.EnableRaisingEvents = $true

$action = {
    $path = $Event.SourceEventArgs.FullPath
    $name = [System.IO.Path]::GetFileNameWithoutExtension($path)
    # 파일 쓰기가 끝날 때까지 대기
    for ($i = 0; $i -lt 30; $i++) {
        try { $fs = [System.IO.File]::Open($path, 'Open', 'Read', 'None'); $fs.Close(); break }
        catch { Start-Sleep -Seconds 1 }
    }
    if ($forceWidth -gt 0) { $resize = "${forceWidth}x" }
    elseif ($maxWidth -gt 0) { $resize = "${maxWidth}x>" }
    else { $resize = $null }
    if ($resize) { magick $path -resize $resize -quality $Quality "$outputFolder\$name.webp" }
    else { magick $path -quality $Quality "$outputFolder\$name.webp" }
    Move-Item $path $backupFolder -Force
}
Register-ObjectEvent $watcher Created -Action $action | Out-Null
while ($true) { Start-Sleep -Seconds 5 }

필요한 폴더와 스크립트가 준비가 완료되면 다음과 같이 됩니다.

watch_settings.webp
watch_settings.webp

스크립트 설명

스크립트가 하는 일은 다음과 같습니다.

  • 입력 폴더에 새 파일이 생기면 감지합니다.
  • 파일 복사가 끝날 때까지 최대 30초 기다립니다.
  • 스크립트 상단의 변수로 동작을 조절합니다. $maxWidth는 0이면 크기 변경을 하지 않고, 숫자를 지정하면 그 숫자를 최대 가로 크기로 비율을 유지하며 줄입니다. $forceWidth는 0이면 강제 변경이 없고, 숫자를 지정하면 가로 크기를 해당 숫자로 비율을 유지하며 변경합니다. $Quality는 WebP 품질이며 기본값은 85입니다.
  • ImageMagick으로 변수 설정에 따라 크기를 조절하고 WebP 파일로 변환해 출력 폴더에 저장합니다.
  • 원본은 원본 보관 폴더로 이동합니다.

부팅 시 자동 실행 설정 방법

스크립트를 매번 손으로 실행하면 자동화 의미가 반감됩니다. 작업 스케줄러에 등록해 로그온 시 자동으로 실행되게 합니다. 명령 프롬프트(CMD)에서 다음 명령어 한 줄로 등록할 수 있습니다. 명령 프롬프트는 관리자 권한으로 실행해야 합니다.

schtasks /create /tn "AutoImage" /tr "powershell.exe -WindowStyle Hidden -File D:\AutoImage\watch.ps1" /sc onlogon

이후로는 윈도우에 로그인하면 스크립트가 숨은 상태로 실행되며, 입력 폴더에 이미지를 넣기만 하면 됩니다.

지금 당장 실행하기

위 명령어로는 재부팅 시에 명령이 실행됩니다. 지금 당장 실행하려면 다음 명령어를 입력합니다. 혹은 작업 스케쥴러에서 실행 버튼을 눌러 실행해도 됩니다.

schtasks /run /tn "AutoImage"
작업스케쥴러에서 Autoimage 실행, 종료
작업스케쥴러에서 Autoimage 실행, 종료

동작을 멈추고 싶을 때는 작업 스케줄러에서 AutoImage 작업을 삭제하거나, 작업 스케쥴러에서 '끝'버튼을 클릭하면 됩니다.

활용 팁

이 폴더는 블로그 이미지 작업에 바로 쓸 수 있습니다.

  • 항상 같은 가로 크기로 변환해야 한다면 $forceWidth값을 사용하면 됩니다. 너무 큰 이미지만 크기 변경을 할 때는 $maxWidth를 사용하면 됩니다.
  • WebP 품질은 $Quality 변수로 조절합니다. 기본값 85는 화질과 용량의 균형이 좋은 설정입니다. 용량을 더 줄이고 싶다면 80으로, 화질을 더 지키고 싶다면 90으로 바꿉니다.
  • JPG와 PNG 모두 같은 방식으로 변환됩니다. 입력 폴더에 두 포맷을 섞어 넣어도 됩니다.
  • 출력 폴더의 이미지를 그대로 블로그에 올리기 전에 한 번씩 확인하는 습관을 들이면 변환 실수를 줄일 수 있습니다.
💡
원본 보관 폴더는 지우지 말고 그대로 두는 것이 좋습니다. 변환 설정을 나중에 바꾸고 싶을 때 원본이 있어야 다시 변환할 수 있습니다.

작업 표시줄의 콘솔 창이 거슬린다면

작업스케쥴러를 통해 Autoimage를 실행하면 작업 표시줄에 콘솔 창이 생깁니다. 이 콘솔 창이 거슬린다면 작업스케쥴러 설정을 통해 안보이도록 할 수 있습니다. 다음과 같이 속성에서 사용자의 로그온 여부에 관계없이 실행으로 변경하면 됩니다. 단, 이렇게 값을 변경할 때 윈도우 계정의 비밀번호를 요구합니다. 비밀번호가 없는 계정이거나 비밀번호를 모르는 계정은 기존대로 사용하시는 걸 추천합니다.

작업스케쥴러의 속성을 변경해서 콘솔 창 없애기
작업스케쥴러의 속성을 변경해서 콘솔 창 없애기

정리

이미지 변환은 손으로 반복할 일이 아닙니다. 입력·출력·원본 보관 폴더 세 개와 파워셸 스크립트 하나면, 이미지를 넣는 것만으로 압축과 변환이 끝나는 환경이 됩니다. 이미지 작업이 잦다면 오늘 폴더부터 만들어 보세요.

써보면서 막히는 부분이 있으면 댓글로 남겨주세요!

태그

BoniK

협업, 의뢰, 레슨 등 문의 : [email protected] | https://open.kakao.com/me/bonik

Bubble button icon