작업 스케줄러 결과 코드 0x1·0x41303 뜻 — 직접 재현해 확인
예약한 작업이 돌지 않을 때 가장 먼저 보는 것이 '마지막 실행 결과' 칸인데, 거기 뜨는 0x1 이나 0x41303 같은 값은 그 자체로는 아무것도 말해 주지 않습니다. 이 글은 코드 설명을 옮겨 적는 대신, 실패하는 작업을 종류별로 직접 만들어 돌려 보고 어떤 코드가 나오는지 확인했습니다. 그 과정에서 **0x1 이 서로 다른 두 상황에 똑같이 나온다**는 것과, 명령줄로 조회하면 16진수가 아예 안 보인다는 것을 알게 됐습니다.
작업 스케줄러 설정이 번거로우면, 프로그램 목록을 만들어 두고 시간만 지정해 실행하는 방식도 있습니다.
코드를 외우지 말고, 어디서 나온 숫자인지부터
작업 스케줄러의 '마지막 실행 결과'에 뜨는 값은 대부분 작업이 실행한 프로그램의 종료 코드를 그대로 옮긴 것입니다. 스케줄러가 만들어 낸 진단이 아니라, 돌린 프로그램이 돌려준 숫자를 보여 줄 뿐입니다.
예외가 둘 있습니다. 0x413xx 로 시작하는 값은 스케줄러 자신의 상태이고(실행 중, 실행된 적 없음 등), 0x8007xxxx 는 윈도우 시스템 오류 코드입니다. 이 셋을 구분하면 절반은 끝납니다.
이 글의 값은 전부 윈도우 11 에서 작업을 직접 만들어 돌려 보고 받은 것입니다. 종류별로 실패하는 작업을 만들고, 실행하고, 결과를 읽은 뒤 전부 삭제했습니다.
0x1 — 가장 흔하고 가장 애매한 코드
0x1 은 검색이 가장 많은 코드인데, 그럴 만한 이유가 있습니다. 서로 다른 두 상황에 똑같이 나오기 때문입니다.
먼저 당연한 쪽입니다. 배치 파일이 exit /b 1 로 끝나면 결과는 1 입니다. 3 으로 끝내면 3 이고요. 프로그램이 돌려준 값이 그대로 올라옵니다.
ok.bat (exit /b 0) → 0
fail1.bat (exit /b 1) → 1
fail3.bat (exit /b 3) → 3문제는 두 번째입니다. 배치 파일 경로를 틀리게 적어도 결과가 1 입니다. 없는 .bat 을 가리키는 작업을 만들어 돌려 보니 역시 1 이 나왔습니다. 스크립트가 실패한 것인지, 애초에 실행조차 안 된 것인지 코드만 봐서는 알 수 없습니다.
왜 그런지는 .exe 로 바꿔 보면 드러납니다. 없는 .exe 를 가리키면 -2147024894, 즉 0x80070002(지정된 파일을 찾을 수 없습니다) 가 나옵니다.
.bat 은 스케줄러가 직접 실행하지 않고 cmd.exe 가 받아서 처리합니다. cmd 는 파일을 못 찾으면 자기 종료 코드로 1 을 돌려줍니다. 명령 창에서 없는 배치 파일을 직접 돌려 봐도 똑같이 1 이 나옵니다.
cmd /c "C:\없는경로\does_not_exist.bat"
echo %ERRORLEVEL%
REM → 1그래서 0x1 을 보면 스크립트를 고치기 전에 경로부터 확인해야 합니다. 작업 속성의 '프로그램/스크립트' 칸에 적힌 경로를 복사해 탐색기 주소창에 붙여 넣어 보세요. 열리지 않으면 스크립트 문제가 아닙니다.
0x41301·0x41303·0x41306 — 실패가 아닌 상태값
0x413 으로 시작하는 값은 스케줄러가 작업의 상태를 알려 주는 것입니다. 프로그램이 실패해서 나온 숫자가 아닙니다. 이걸 오류로 읽고 스크립트를 뜯어보는 일이 흔합니다.
| 16진수 | schtasks 출력 | 뜻 | 할 일 |
|---|---|---|---|
0x41301 | 267009 | 지금 실행 중 | 기다립니다. 안 끝나면 '설정' 탭의 중지 시간을 보세요 |
0x41303 | 267011 | 한 번도 실행된 적 없음 | 트리거가 안 걸린 것입니다. 조건·트리거 탭 확인 |
0x41306 | 267014 | 작업이 종료됨 | 사람이 끝냈거나 제한 시간에 걸렸습니다 |
0x41301 은 특히 오해하기 쉽습니다. 30초 걸리는 작업을 돌려 놓고 바로 조회하면 이 값이 나옵니다. 실패가 아니라 아직 안 끝난 것이고, 끝나면 그때 진짜 종료 코드로 바뀝니다.
0x41303 은 '실행했는데 실패'가 아니라 '실행 자체가 없었다'는 뜻이라 원인이 아예 다른 곳에 있습니다. 시간이 지났는데도 이 값이면 트리거가 안 걸린 것이니, 작업이 켜져 있는지·조건 탭의 전원 설정에 막히지 않았는지를 봐야 합니다.
명령줄로 보면 16진수가 안 보입니다
이 글을 쓰면서 가장 성가셨던 부분입니다. 화면에서 보는 코드와 명령으로 받는 값의 표기가 다릅니다.
schtasks /query /tn 작업이름 /fo LIST /v
# 마지막 실행 결과: 267011
Get-ScheduledTaskInfo -TaskName 작업이름 | Select-Object LastTaskResult
# LastTaskResult : 267011둘 다 10진수로 내놓습니다. 그런데 문서와 검색 결과는 전부 16진수(0x41303)로 쓰여 있어서, 267011 을 그대로 검색하면 아무것도 안 나옵니다. 둘은 같은 값입니다.
# 10진수를 16진수로
"0x{0:X}" -f 267011
# → 0x41303
# 음수로 나온 값도 같은 방법으로
"0x{0:X}" -f -2147024894
# → 0x800700020x80070002 처럼 8 로 시작하는 코드는 10진수로 보면 음수가 됩니다. -2147024894 같은 값이 보이면 당황하지 말고 위 변환을 거치세요. 앞의 8007 은 윈도우 시스템 오류라는 표시이고, 뒤 네 자리가 실제 원인입니다.
코드별로 어디를 볼지
- 10 이 떴는데 아무 일도 안 일어났다 — 프로그램은 정상 종료했습니다. 창이 있는 프로그램이라면 보이지 않는 세션에서 돌았을 가능성이 큽니다. 보안 옵션의 '사용자가 로그온할 때만 실행'을 확인하세요.
- 20x1 — 먼저 경로를 확인합니다. 경로가 맞다면 그 스크립트를 명령 창에서 직접 돌려 보고 같은 1 이 나오는지 봅니다.
- 30x80070002 — 파일이 없습니다. 경로 오타, 옮겨진 파일, 네트워크 드라이브가 연결 안 된 경우가 흔합니다.
- 40x41301 — 아직 돌고 있습니다. 잠시 뒤 다시 조회하세요.
- 50x41303 — 실행된 적이 없습니다. 트리거와 조건 탭을 봅니다.
- 60x41306 — 중간에 종료됐습니다. '설정' 탭의 '작업이 다음 시간보다 오래 실행되면 중지' 값을 확인하세요.
작업을 만드는 방법과 창이 안 뜨는 문제, 노트북 전원 조건 같은 설정 쪽 이야기는 블로그의 다른 글 '윈도우 프로그램 예약 실행 — 작업 스케줄러 사용법과 실행이 안 될 때 확인할 것'에 정리해 두었습니다.
확인하면서 알게 된 것 하나 더
schtasks 로 작업을 만들 때 시작 날짜(/sd)의 형식이 시스템 설정을 따릅니다. 이 PC 에서는 12/31/2030 을 넣으면 거부당하고 2030/12/31 이라야 받았습니다.
schtasks /create ... /sd 12/31/2030
ERROR: Invalid Start Date (Date should be in "yyyy/mm/dd" format).오류 메시지가 어떤 형식을 원하는지 친절하게 알려 주니 그대로 따르면 됩니다. 다른 사람의 스크립트를 가져다 쓸 때 이 한 줄에서 막히는 경우가 있습니다.
자주 묻는 질문
Q. 0x1 이 뜨는데 스크립트는 수동으로 돌리면 잘 됩니다.
경로나 실행 계정이 다를 때 자주 그렇습니다. 먼저 작업에 적힌 경로를 그대로 복사해 열어 보세요. 경로가 맞다면 '시작 위치' 칸이 비어 있는지 보십시오 — 스크립트가 상대 경로로 파일을 찾는다면 시작 위치가 없을 때 실패합니다. 수동 실행과 달리 예약 실행은 작업 폴더가 시스템 폴더로 잡히는 경우가 있습니다.
Q. 267011 을 검색했는데 아무것도 안 나옵니다.
10진수라서 그렇습니다. 0x41303 으로 검색하시면 됩니다. 변환은 PowerShell 에서 "0x{0:X}" -f 267011 로 바로 할 수 있습니다. 반대로 음수가 나왔다면 0x8007xxxx 형태의 윈도우 시스템 오류입니다.
Q. 결과가 0x41301 에서 안 바뀝니다.
작업이 계속 돌고 있다는 뜻입니다. 끝나지 않는 프로그램이거나, 입력을 기다리며 멈춰 있을 수 있습니다. '설정' 탭에서 '작업이 다음 시간보다 오래 실행되면 중지'를 켜 두면 제한 시간이 지났을 때 정리되고, 그때는 결과가 0x41306 으로 바뀝니다.
Q. 같은 작업인데 어떤 날은 0, 어떤 날은 0x1 입니다.
프로그램이 상황에 따라 다른 종료 코드를 내는 것입니다. 스크립트 안에서 로그를 남기게 해 두면 어느 단계에서 갈리는지 보입니다. 배치 파일이라면 맨 위에 @echo off 대신 출력을 파일로 넘기도록 > C:\로그.txt 2>&1 를 붙여 두면 다음 실패 때 원인이 남습니다.
작업 스케줄러 설정이 번거로우면, 프로그램 목록을 만들어 두고 시간만 지정해 실행하는 방식도 있습니다.