← 블로그 목록
윈도우작성 · 8분 읽기

작업 스케줄러 결과 코드 0x1·0x41303 뜻 — 직접 재현해 확인

예약한 작업이 돌지 않을 때 가장 먼저 보는 것이 '마지막 실행 결과' 칸인데, 거기 뜨는 0x1 이나 0x41303 같은 값은 그 자체로는 아무것도 말해 주지 않습니다. 이 글은 코드 설명을 옮겨 적는 대신, 실패하는 작업을 종류별로 직접 만들어 돌려 보고 어떤 코드가 나오는지 확인했습니다. 그 과정에서 **0x1 이 서로 다른 두 상황에 똑같이 나온다**는 것과, 명령줄로 조회하면 16진수가 아예 안 보인다는 것을 알게 됐습니다.

이 글에서 소개하는 무료 도구
GUI Apps Controller — 예약 실행 도구

작업 스케줄러 설정이 번거로우면, 프로그램 목록을 만들어 두고 시간만 지정해 실행하는 방식도 있습니다.

도구 보기 →

코드를 외우지 말고, 어디서 나온 숫자인지부터

작업 스케줄러의 '마지막 실행 결과'에 뜨는 값은 대부분 작업이 실행한 프로그램의 종료 코드를 그대로 옮긴 것입니다. 스케줄러가 만들어 낸 진단이 아니라, 돌린 프로그램이 돌려준 숫자를 보여 줄 뿐입니다.

예외가 둘 있습니다. 0x413xx 로 시작하는 값은 스케줄러 자신의 상태이고(실행 중, 실행된 적 없음 등), 0x8007xxxx 는 윈도우 시스템 오류 코드입니다. 이 셋을 구분하면 절반은 끝납니다.

실제로 작업을 만들어 돌려 보고 받은 값들입니다. 왼쪽이 `schtasks` 가 출력한 그대로입니다.
ℹ️

이 글의 값은 전부 윈도우 11 에서 작업을 직접 만들어 돌려 보고 받은 것입니다. 종류별로 실패하는 작업을 만들고, 실행하고, 결과를 읽은 뒤 전부 삭제했습니다.

0x1 — 가장 흔하고 가장 애매한 코드

0x1 은 검색이 가장 많은 코드인데, 그럴 만한 이유가 있습니다. 서로 다른 두 상황에 똑같이 나오기 때문입니다.

먼저 당연한 쪽입니다. 배치 파일이 exit /b 1 로 끝나면 결과는 1 입니다. 3 으로 끝내면 3 이고요. 프로그램이 돌려준 값이 그대로 올라옵니다.

text
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 이 나옵니다.

bash
cmd /c "C:\없는경로\does_not_exist.bat"
echo %ERRORLEVEL%
REM → 1
⚠️

그래서 0x1 을 보면 스크립트를 고치기 전에 경로부터 확인해야 합니다. 작업 속성의 '프로그램/스크립트' 칸에 적힌 경로를 복사해 탐색기 주소창에 붙여 넣어 보세요. 열리지 않으면 스크립트 문제가 아닙니다.

0x41301·0x41303·0x41306 — 실패가 아닌 상태값

0x413 으로 시작하는 값은 스케줄러가 작업의 상태를 알려 주는 것입니다. 프로그램이 실패해서 나온 숫자가 아닙니다. 이걸 오류로 읽고 스크립트를 뜯어보는 일이 흔합니다.

16진수schtasks 출력뜻할 일
0x41301267009지금 실행 중기다립니다. 안 끝나면 '설정' 탭의 중지 시간을 보세요
0x41303267011한 번도 실행된 적 없음트리거가 안 걸린 것입니다. 조건·트리거 탭 확인
0x41306267014작업이 종료됨사람이 끝냈거나 제한 시간에 걸렸습니다

0x41301 은 특히 오해하기 쉽습니다. 30초 걸리는 작업을 돌려 놓고 바로 조회하면 이 값이 나옵니다. 실패가 아니라 아직 안 끝난 것이고, 끝나면 그때 진짜 종료 코드로 바뀝니다.

0x41303 은 '실행했는데 실패'가 아니라 '실행 자체가 없었다'는 뜻이라 원인이 아예 다른 곳에 있습니다. 시간이 지났는데도 이 값이면 트리거가 안 걸린 것이니, 작업이 켜져 있는지·조건 탭의 전원 설정에 막히지 않았는지를 봐야 합니다.

명령줄로 보면 16진수가 안 보입니다

이 글을 쓰면서 가장 성가셨던 부분입니다. 화면에서 보는 코드와 명령으로 받는 값의 표기가 다릅니다.

powershell
schtasks /query /tn 작업이름 /fo LIST /v
# 마지막 실행 결과: 267011

Get-ScheduledTaskInfo -TaskName 작업이름 | Select-Object LastTaskResult
# LastTaskResult : 267011

둘 다 10진수로 내놓습니다. 그런데 문서와 검색 결과는 전부 16진수(0x41303)로 쓰여 있어서, 267011 을 그대로 검색하면 아무것도 안 나옵니다. 둘은 같은 값입니다.

powershell
# 10진수를 16진수로
"0x{0:X}" -f 267011
# → 0x41303

# 음수로 나온 값도 같은 방법으로
"0x{0:X}" -f -2147024894
# → 0x80070002
💡

0x80070002 처럼 8 로 시작하는 코드는 10진수로 보면 음수가 됩니다. -2147024894 같은 값이 보이면 당황하지 말고 위 변환을 거치세요. 앞의 8007 은 윈도우 시스템 오류라는 표시이고, 뒤 네 자리가 실제 원인입니다.

코드별로 어디를 볼지

  1. 10 이 떴는데 아무 일도 안 일어났다 — 프로그램은 정상 종료했습니다. 창이 있는 프로그램이라면 보이지 않는 세션에서 돌았을 가능성이 큽니다. 보안 옵션의 '사용자가 로그온할 때만 실행'을 확인하세요.
  2. 20x1 — 먼저 경로를 확인합니다. 경로가 맞다면 그 스크립트를 명령 창에서 직접 돌려 보고 같은 1 이 나오는지 봅니다.
  3. 30x80070002 — 파일이 없습니다. 경로 오타, 옮겨진 파일, 네트워크 드라이브가 연결 안 된 경우가 흔합니다.
  4. 40x41301 — 아직 돌고 있습니다. 잠시 뒤 다시 조회하세요.
  5. 50x41303 — 실행된 적이 없습니다. 트리거와 조건 탭을 봅니다.
  6. 60x41306 — 중간에 종료됐습니다. '설정' 탭의 '작업이 다음 시간보다 오래 실행되면 중지' 값을 확인하세요.

작업을 만드는 방법과 창이 안 뜨는 문제, 노트북 전원 조건 같은 설정 쪽 이야기는 블로그의 다른 글 '윈도우 프로그램 예약 실행 — 작업 스케줄러 사용법과 실행이 안 될 때 확인할 것'에 정리해 두었습니다.

확인하면서 알게 된 것 하나 더

schtasks 로 작업을 만들 때 시작 날짜(/sd)의 형식이 시스템 설정을 따릅니다. 이 PC 에서는 12/31/2030 을 넣으면 거부당하고 2030/12/31 이라야 받았습니다.

text
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 를 붙여 두면 다음 실패 때 원인이 남습니다.

이 글에서 소개하는 무료 도구
GUI Apps Controller — 예약 실행 도구

작업 스케줄러 설정이 번거로우면, 프로그램 목록을 만들어 두고 시간만 지정해 실행하는 방식도 있습니다.

도구 보기 →

다른 글