Windows 배치 .bat 및 .cmd 파일의 차이점
사용자는 종종 COMMAND.COM
과 cmd.exe
를 같은 것으로 간주합니다. 또한 배치 파일에 사용할 확장명 .bat
또는 .cmd
에 대해 혼란스러워합니다.
그것들은 같거나 다르며 어떤 확장을 사용하는 것이 중요합니까? 이 모든 질문에 대한 답은 이 기사에서 논의됩니다.
배치 파일을 실행하면 명령 프롬프트에서 실행됩니다. 배치 파일은 대부분 Windows NT 버전의 cmd.exe
에서 실행됩니다.
이전 버전에서는 COMMAND.COM
쉘에서 실행됩니다.
COMMAND.COM
과 cmd.exe
의 차이점
COMMAND.COM
및 cmd.exe
는 MS-DOS 및 Windows용 명령 인터프리터 버전입니다. COMMAND.COM
은 16비트 프로그램을 실행하도록 설계된 명령줄 셸입니다. 부팅 후 가장 먼저 실행되는 DOS 프로그램으로 AUTOEXEC.BAT
구성 파일을 실행하여 시스템을 설정합니다.
MS-DOS, Windows 95-98 및 Windows ME용으로 1980년에 처음 출시되었습니다. 16비트 프로그램으로 실행되도록 설계된 이전 프로그램에만 호환되고 유용하며 그 이후로 업데이트되지 않았습니다.
반면에 cmd.exe
는 COMMAND.COM
의 후속 제품입니다. 32비트 프로그램용으로 설계되었으며 OS/2, Windows NT 및 Windows CE용으로 1987년에 출시되었습니다.
COMMAND.COM
에 비해 cmd.exe
는 자세한 오류 메시지와 같은 더 나은 확장을 제공하고 명령 기록을 확인하는 화살표 키를 지원하며 지연된 변수 확장을 지원하고 내부 명령을 개선했습니다.
배치 파일은 명령을 저장하고 명령줄 인터프리터에 의해 직렬 순서로 실행할 수 있는 스크립트 파일입니다. .bat
파일 이름 확장자는 MS-DOS 및 Windows에서 사용되며 배치 파일에 사용된 첫 번째 확장자였습니다. 반면 .cmd
는 Windows NT 제품군 및 OS/2에서 사용되었습니다.
.cmd
파일은 COMMAND.COM
이 이 확장자를 인식하지 못하기 때문에 cmd.exe
에서만 실행할 수 있습니다.
이 튜토리얼은 .bat
와 .cmd
파일의 주요 차이점을 설명합니다.
Windows 배치 .bat
와 .cmd
파일의 주요 차이점
.bat
와 .cmd
의 근본적인 주요 차이점은 아래에서 설명합니다.
ERRORLEVEL 처리
.bat
및 .cmd
는 ERRORLEVEL 변수를 다르게 처리합니다. ERRORLEVEL
이 호출되면 .bat
는 실제 오류가 발생한 경우에만 상태를 변경합니다. 즉 append
, dpath
, ftype
, set
, path
, assoc
, .bat
는 ERRORLEVEL을 설정하지 않습니다.
그러나 .cmd
의 경우 실제 오류와 상관없이 ERRORLEVEL로 설정됩니다. 성공적으로 실행된 후에도 ERRORLEVEL을 0으로 재설정합니다.
간혹 스크립트 작성 시 혼동을 일으키기도 하므로 사용자가 주의해야 합니다.
실행 명령
환경 변수 PATHEXT
는 실행 순서를 제어합니다. 실행은 PATHEXT
변수에 저장된 변수의 순서에 따라 다릅니다.
.bat
및 .cmd
스크립트가 모두 동일한 폴더에 저장되어 있는 경우 확장자 없이 스크립트를 실행하면 .bat
파일이 먼저 실행되고 그 다음 .cmd
파일이 실행됩니다. PATHEXT
변수의 기본 순서는 다음과 같습니다.
ECHO %PATHEXT%
그러나 PATHEXT
변수에서 확장의 순서를 변경할 수 있습니다. PATHEXT
변수를 삭제하더라도 순서는 Windows의 MS-DOS 버전과 동일합니다.
지원하다
Windows 버전 지원과 관련하여 .cmd
파일은 .bat
파일의 경우와 동일하지 않은 거의 모든 Windows 버전에서 지원됩니다. .bat
는 처음에 MS-DOS용으로 개발된 반면 .cmd
는 Windows NT용으로 개발되었으므로 .cmd
파일은 Windows NT가 아닌 시스템에서 실행되지 않습니다.
.bat
에 대한 스크립팅은 .cmd
에 비해 더 오래되었습니다. 그리고 .cmd
는 .bat
파일과 비교할 때 이전 버전과 호환됩니다.
보안
보안과 관련하여 .cmd
는 .bat
보다 안전합니다. .bat
파일의 명령은 직렬 방식으로 저장되고 명령을 한 줄씩 실행하기 때문에 보안 공격에 더 취약합니다. .cmd
파일은 명령을 순차적으로 실행하지 않으므로 .bat
파일보다 안전합니다.
.cmd
파일은 .cmd
파일을 보고, 설치하고, 실행할 수 있는 애플리케이션을 통해 Android에서도 사용할 수 있습니다. ‘.bat’ 파일은 Android에서 지원되지 않습니다.
언어
.bat
파일에는 MS-DOS용으로 이전에 개발된 이전 버전의 Microsoft 언어가 있습니다. .cmd
는 최신 버전의 Windows용으로 개발된 프로그래밍 언어 및 인터프리터입니다.
확장자 없이 배치 파일을 실행하면 .bat
로 실행되는 반면 .cmd
파일 확장자의 경우 파일 이름을 filename.cmd
로 입력해야 합니다. 이 경우는 두 확장자의 파일 이름이 동일한 경우에만 적용됩니다. .cmd
는 파일을 실행하기 위해 확장자를 제공해야 하는 반면 .bat
파일은 확장자 없이 프로그램을 직접 실행합니다.
아래 이미지에서 볼 수 있듯이 testfile
이라는 파일 이름과 확장자가 .bat
및 .cmd
인 두 개의 배치 파일이 있습니다. .bat
파일은 Windows 배치 파일로 저장되고 .cmd
는 Windows 명령 스크립트로 저장됩니다.
.bat
파일 실행:
.cmd
파일 실행:
근무 환경
.bat
파일은 32비트 Windows에서 16비트 프로그램을 실행하는 Windows 프로세스인 NTVDM 환경에서 실행되도록 설계되었습니다. NTVDM은 Windows NT Virtual DOS Machine의 약자로 ntvdm.exe
로 실행됩니다.
시스템의 중요한 프로그램으로 프로그램의 안정적인 실행을 위해 제거되어서는 안됩니다. .bat
파일은 이 환경에서 실행되므로 모든 환경에서 지원되지만 .cmd
파일은 16비트 환경에서 실행할 수 없습니다.
또한 .cmd
파일은 실행 전에 메모리에 저장되는 반면 .bat
파일은 메모리에 저장하지 않고 명령을 한 줄씩 실행합니다.
통역사
.bat
파일 확장자를 가진 배치 파일은 COMMAND.COM
과 cmd.exe
에서 모두 실행할 수 있지만 두 인터프리터는 파일을 다르게 실행합니다. .cmd
파일은 cmd.exe
에서만 실행됩니다.
COMSPEC
환경 변수는 배치 파일에 대한 명령줄 인터프리터를 시작하는 데 사용됩니다. 기본적으로 MS-DOS와 같은 이전 버전의 경우 COMMAND.COM
으로 설정됩니다.
Windows NT부터 기본값은 cmd.exe
입니다. 내용을 보려면 다음 명령을 실행하십시오.
ECHO %COMSPEC%
따라서 최신 버전의 Windows는 cmd.exe
에서 실행됩니다. 그러나 이전 버전에서는 .bat
파일만 실행됩니다.
결론
따라서 배치 파일 확장자 .bat
와 .cmd
의 주요 차이점에 대해 논의했습니다. 둘 다 서로 장단점이 있습니다.
결론적으로 .bat
파일에서 작동하는 모든 것은 .cmd
파일에서도 작동해야 합니다. .cmd
파일은 .bat
파일보다 빠르고 안정적입니다.
올바른 확장을 사용하는 것은 요구 사항에 따라 다릅니다. 그러나 최신 버전의 경우 .cmd
파일 확장자를 사용하는 것이 좋습니다.