
윈도우에서 파이썬 스크립트를 매시간 자동 실행하려면 핵심은 3가지입니다. 파이썬 실행 파일의 전체 경로, 스크립트가 있는 작업 폴더, 실패를 확인할 로그 파일을 작업 스케줄러에 정확히 넣어야 합니다.
먼저 run_hourly.bat와 logs 폴더를 만들고, 더블클릭 실행이 성공한 뒤 작업 스케줄러에 등록하세요.
이번 기록은 Claude Code로 만든 간단한 Python 자동화 스크립트를 Windows 작업 스케줄러에 매시간 등록하면서 실제로 막혔던 지점을 기준으로 정리했습니다. 결론부터 말하면, 스케줄러에 바로 python script.py를 넣기보다 .bat 파일로 감싸는 방식이 가장 덜 헷갈렸습니다.
먼저 명령 프롬프트에서
where python으로 경로를 확인하고, 스크립트 폴더에 실행용 run_hourly.bat부터 만들어보세요.내가 등록한 실제 흐름
예시는 가벼운 빌더용 자동화입니다. Python 스크립트가 특정 RSS와 API 응답을 확인한 뒤, 요약 결과를 Slack 웹훅으로 보내는 구조였습니다. 코드는 Claude Code에서 초안을 만들고, VS Code 터미널에서 먼저 수동 실행을 확인했습니다.
폴더는 아래처럼 단순하게 잡았습니다.
C:\automation\hourly-bot\
main.py
.env
logs\
run_hourly.bat
작업 스케줄러는 현재 로그인 여부, 관리자 권한, 상대 경로에 민감합니다. 그래서 스크립트 안에서 파일을 읽거나 .env를 불러온다면 시작 위치를 반드시 프로젝트 폴더로 맞춰야 했습니다.
1. 먼저 배치 파일로 실행을 고정했다
스케줄러에 직접 Python을 넣어도 되지만, 로그와 가상환경 경로를 함께 관리하려면 배치 파일이 편합니다. 아래처럼 표준 출력과 에러를 같은 로그에 남기면 실패 원인을 바로 볼 수 있습니다.
@echo off
cd /d C:\automation\hourly-bot
C:\Users\me\AppData\Local\Programs\Python\Python312\python.exe main.py >> logs\hourly.log 2>&1
가상환경을 쓴다면 Python 경로를 아래처럼 바꿉니다.
C:\automation\hourly-bot\.venv\Scripts\python.exe main.py >> logs\hourly.log 2>&1
이 상태에서 run_hourly.bat를 더블클릭해 정상 실행되는지 먼저 확인했습니다. 여기서 실패하면 작업 스케줄러 설정을 만져도 해결되지 않습니다.
2. 작업 스케줄러에서 매시간 반복으로 등록
Windows 검색에서 작업 스케줄러를 열고, 기본 작업 만들기보다 작업 만들기를 선택하는 편이 좋았습니다. 반복 간격과 시작 위치를 더 정확히 넣을 수 있기 때문입니다.
- 일반: 가장 높은 수준의 권한으로 실행 체크
- 트리거: 매일 시작, 고급 설정에서 1시간마다 반복, 기간은 무기한
- 동작: 프로그램 시작
- 프로그램/스크립트:
C:\automation\hourly-bot\run_hourly.bat - 시작 위치:
C:\automation\hourly-bot
여기서 가장 많이 놓치는 부분이 시작 위치입니다. 이 칸이 비어 있으면 수동 실행은 되는데 예약 실행에서는 .env, CSV, SQLite 파일을 못 찾는 일이 생깁니다.
어떤 자동화 방식이 맞을까
윈도우 작업 스케줄러는 무료이고 로컬 파일 접근이 쉽지만, 항상 켜져 있는 PC가 필요합니다. 외부 서버나 협업 워크플로가 중심이면 n8n, Zapier, GitHub Actions가 더 나을 때도 있습니다.
| 방식 | 잘 맞는 상황 | 장점 | 주의할 점 |
|---|---|---|---|
| Windows 작업 스케줄러 | 내 PC에서 Python 파일을 주기 실행 | 무료, 설치 추가 없음, 로컬 파일 접근 쉬움 | PC가 꺼지면 실행 안 됨, 경로 설정에 민감 |
| GitHub Actions | 코드 저장소 기반의 정기 실행 | 서버 없이 cron 가능, 이력 확인 쉬움 | 비밀키 관리 필요, 로컬 파일 작업에는 부적합 |
| n8n | API, Slack, Notion, Airtable 연결 | 시각적 워크플로, 재시도 설정 편함 | 호스팅 또는 클라우드 비용 고려 |
| Zapier 또는 Make | 비개발자용 SaaS 자동화 | 설정이 빠르고 앱 연동이 많음 | 복잡한 Python 로직은 제한적 |
이 방법을 추천하는 사람
로컬 엑셀 파일 정리, 사내 폴더 감시, 간단한 크롤링, Slack 알림처럼 내 PC 환경에 붙어 있는 자동화라면 작업 스케줄러가 가장 빠릅니다. 특히 AI 코딩 에이전트로 만든 작은 Python 스크립트를 실험 단계에서 돌릴 때 좋습니다.
반대로 24시간 안정성이 중요하거나 여러 명이 결과를 봐야 한다면 처음부터 클라우드 실행을 고려하세요. 예를 들어 Notion 데이터베이스를 매시간 갱신하는 팀 업무라면 n8n Cloud나 GitHub Actions가 운영 면에서 더 깔끔할 수 있습니다.
실제로 막힌 지점과 해결법
상대 경로 때문에 파일을 못 찾았다
수동 실행은 성공했는데 예약 실행만 실패한다면 대부분 경로 문제였습니다. open('data.csv')처럼 상대 경로를 쓰는 코드가 있다면, 스케줄러의 시작 위치를 넣거나 Python 코드에서 __file__ 기준으로 절대 경로를 만들어야 합니다.
로그가 없어서 실패 원인을 몰랐다
처음에는 작업 기록만 보고 디버깅하려 했는데 정보가 부족했습니다. 배치 파일에 >> logs\hourly.log 2>&1를 붙인 뒤에야 모듈 미설치, API 키 누락, 권한 문제를 빠르게 확인할 수 있었습니다.
노트북 절전 모드가 실행을 막았다
매시간 자동화를 기대한다면 전원 설정도 확인해야 합니다. 작업 조건 탭에서 AC 전원일 때만 실행할지, 절전 모드 해제를 허용할지 정해두는 것이 좋습니다.
FAQ
작업 스케줄러에서 Python 파일을 직접 실행해도 되나요?
가능합니다. 다만 로그, 가상환경, 작업 폴더를 함께 다루려면 배치 파일로 감싸는 편이 실수 확률이 낮습니다.
매시간이 아니라 10분마다도 가능한가요?
가능합니다. 트리거의 고급 설정에서 반복 간격을 10분으로 바꾸면 됩니다. 단, 스크립트 실행 시간이 반복 간격보다 길면 중복 실행 문제가 생길 수 있습니다.
Claude Code나 ChatGPT로 만든 코드도 그대로 등록하면 되나요?
먼저 터미널에서 2~3회 수동 실행해 보세요. API 키, 파일 경로, 패키지 설치가 확인된 뒤 스케줄러에 올리는 순서가 안전합니다.
다음 행동
오늘 바로 끝내려면 새 자동화를 크게 만들지 말고, print('ok')만 찍는 main.py부터 매시간 등록해보세요. 로그에 시간이 쌓이면 그다음에 Slack 알림, CSV 처리, Notion API 같은 실제 작업을 붙이면 됩니다.
윈도우 작업 스케줄러로 파이썬 자동화를 매시간 돌리는 핵심은 화려한 설정이 아니라 전체 경로, 시작 위치, 로그입니다. 이 세 가지만 고정하면 로컬 자동화의 첫 운영 단계는 꽤 안정적으로 넘어갈 수 있습니다.
관련 링크
- n8n 셀프호스팅 비용, 월 1만원대 VPS로 충분한 경우와 아닌 경우
- n8n 웹훅이 안 들어올 때 점검 체크리스트: 테스트 URL, 프로덕션 URL부터 확인하세요
- WordPress REST API 401 인증 실패, 원인과 점검 순서: 자동화 연결 전에 보는 체크리스트
- 관련 태그 더 보기
- 카테고리 더 보기
- 검색 결과 더 보기
- 참고 링크
