배치 스크립트-반환 코드

기본적으로 명령 줄 실행이 완료되면 실행이 성공하면 0을 반환하고 실행이 실패하면 0이 아닌 값을 반환해야합니다. 실행이 실패한 후 배치 스크립트가 0이 아닌 값을 반환하면 0이 아닌 값이 오류 번호를 나타냅니다. 그런 다음 오류 번호를 사용하여 오류의 원인을 확인하고 그에 따라 해결합니다.

다음은 일반적인 종료 코드와 설명입니다.

에러 코드 기술
0 프로그램이 성공적으로 완료되었습니다.
1 잘못된 기능. Action이 Windows 명령 프롬프트 cmd.exe에서 인식되지 않는 명령을 실행하려고 시도했음을 나타냅니다.
2 시스템이 지정된 파일을 찾을 수 없습니다. 지정된 위치에서 파일을 찾을 수 없음을 나타냅니다.
시스템이 지정된 경로를 찾을 수 없습니다. 지정된 경로를 찾을 수 없음을 나타냅니다.
5 접근이 금지되어있다. 사용자에게 지정된 리소스에 대한 액세스 권한이 없음을 나타냅니다.

9009

0x2331

프로그램이 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. 조치를 구성 할 때 명령, 애플리케이션 이름 또는 경로의 철자가 틀 렸음을 나타냅니다.

221225495

0xC0000017

-1073741801

사용 가능한 가상 메모리가 충분하지 않습니다.

Windows의 메모리가 부족함을 나타냅니다.

3221225786

0xC000013A

-1073741510

응용 프로그램이 CTRL + C의 결과로 종료되었습니다. 사용자의 키보드 입력 CTRL + C 또는 CTRL + Break 또는 닫기 명령 프롬프트 창에 의해 응용 프로그램이 종료되었음을 나타냅니다.

3221225794

0xC0000142

-1073741502

응용 프로그램이 제대로 초기화되지 않았습니다. 현재 사용자에게 액세스 권한이없는 데스크톱에서 애플리케이션이 시작되었음을 나타냅니다. 또 다른 가능한 원인은 gdi32.dll 또는 user32.dll이 초기화에 실패했기 때문입니다.

오류 수준

환경 변수 % ERRORLEVEL %에는 마지막으로 실행 된 프로그램 또는 스크립트의 반환 코드가 포함됩니다.

기본적으로 ERRORLEVEL을 확인하는 방법은 다음 코드를 사용하는 것입니다.

통사론

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

배치 파일의 끝에 EXIT / B % ERRORLEVEL % 명령을 사용하여 배치 파일에서 오류 코드를 반환하는 것이 일반적입니다.

EXIT / B 배치 파일 끝에 배치 파일 실행이 중지됩니다.

사용자 지정 반환 코드를 반환하려면 배치 파일 끝에 EXIT / B <exitcodes>를 사용합니다.

환경 변수 % ERRORLEVEL %에는 마지막으로 실행 된 명령의 최신 오류 코드 인 배치 파일의 최신 오류 수준이 포함됩니다. 배치 파일에서는 동일한 변수가 다른 컴퓨터에서 다른 값으로 확장되므로 항상 상수 값 대신 환경 변수를 사용하는 것이 좋습니다.

배치 파일에서 오류 코드를 확인하는 방법에 대한 간단한 예를 살펴 보겠습니다.

다음 코드가있는 Find.cmd라는 배치 파일이 있다고 가정 해 보겠습니다. 코드에서 list.txt라는 파일을 찾지 못하면 오류 수준을 7로 설정해야한다고 명확하게 언급했습니다. 마찬가지로 변수 userprofile이 정의되지 않은 경우 오류 수준 코드를 다음과 같이 설정해야합니다. 9.

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

먼저 Find.cmd를 호출하는 App.cmd라는 다른 파일이 있다고 가정 해 보겠습니다. 이제 Find.cmd가 오류 수준을 0보다 크게 설정하는 오류를 반환하면 프로그램을 종료합니다. 다음 배치 파일에서 Find.cnd 찾기를 호출 한 후 실제로 오류 수준이 0보다 큰지 확인합니다.

Call Find.cmd

if errorlevel gtr 0 exit 
echo “Successful completion”

산출

위의 프로그램에서 출력으로 다음과 같은 시나리오를 가질 수 있습니다.

  • c : \ lists.txt 파일이 없으면 콘솔 출력에 아무것도 표시되지 않습니다.

  • userprofile 변수가 없으면 콘솔 출력에 아무것도 표시되지 않습니다.

  • 위의 두 조건이 모두 통과하면 명령 프롬프트에 "성공적인 완료"문자열이 표시됩니다.

루프

의사 결정 장에서 우리는 순차적으로 실행되는 명령문을 보았습니다. 또한 프로그램 논리의 제어 흐름을 변경하기 위해 배치 스크립트에서 구현을 수행 할 수도 있습니다. 그런 다음 제어문의 흐름으로 분류됩니다.

S. 아니 루프 및 설명
1 While 문 구현

배치 스크립트에서 사용할 수있는 직접적인 while 문은 없지만 if 문과 레이블을 사용하여이 루프를 매우 쉽게 구현할 수 있습니다.

2 For 문-구현 목록

"FOR"구조는 배치 파일에 대한 루핑 기능을 제공합니다. 다음은 값 목록 작업을위한 'for'문의 일반적인 구성입니다.

범위를 반복

'for'문에는 값 범위를 이동할 수있는 기능도 있습니다. 다음은 성명서의 일반적인 형식입니다.

4 클래식 for 루프 구현

다음은 대부분의 프로그래밍 언어에서 사용할 수있는 고전적인 'for'문입니다.

명령 줄 인수를 통해 반복

'for'문은 명령 줄 인수를 확인하는 데 사용할 수도 있습니다. 다음 예제는 'for'문을 사용하여 명령 줄 인수를 반복하는 방법을 보여줍니다.

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

산출

위의 코드가 Test.bat라는 파일에 저장되어 있다고 가정 해 보겠습니다. 위의 명령은 배치 파일이 명령 줄 인수 1,2 및 3을 Test.bat 1 2 3으로 전달하면 다음 출력을 생성합니다.

1 
2 
3

S. 아니 루프 및 설명
1 Break 문 구현

break 문은 프로그래밍 언어 내의 루프 내부에서 제어 흐름을 변경하는 데 사용됩니다. break 문은 일반적으로 루프 구조에서 사용되며 가장 안쪽에있는 루프를 즉시 종료하는 데 사용됩니다.