programing

Windows 배치 파일: .bat vs .cmd?

subpage 2023. 4. 19. 23:03
반응형

Windows 배치 파일: .bat vs .cmd?

론, 가 as as as as as as as as as as as 。.bat규칙이며, 16비트 명명 규칙입니다..cmdNT부터 시작하는 32비트 Windows용입니다만, .bat 파일은 어디에서나 볼 수 있고, 어느 서픽스를 사용해도 똑같이 동작하는 것 같습니다.NT보다 오래된 코드에서는 실행할 필요가 없다고 가정하면 배치 파일의 이름을 어떻게 붙이느냐가 중요한가요?아니면 잘못된 서픽스를 사용하여 대기하고 있는 사람이 있습니까?

Mark Zbikowski가 직접 게시한 이 뉴스 그룹의 게시물:

의 차이점CMD 및CMD까지 BAT.EXE에 관한 것은, 의 내선번호가 유효하게 되어 있는 경우, PATH/APPEND/PROMPT/SET/ASOC 입니다.CMD 파일은 오류에 관계없이 ERROR LEVEL을 설정합니다.BAT는 에러에 대해서만 ERROR LEVEL을 설정합니다.

즉, ERROR LEVEL이 0이 아닌 것으로 설정되어 있는 경우, 이러한 명령어 중 하나를 실행하면 ERROR LEVEL은 다음과 같이 됩니다.

  • .bat 파일에서 0이 아닌 값을 그대로 유지합니다.
  • .disable 파일에서 0으로 리셋합니다.

이 스레드의 다양한 답변과 인용된 참조에서 검증된 정보를 정리한 것입니다.

  1. command.com는 MS-DOS에서 도입된 16비트 명령어프로세서이며 Win9x 시리즈의 운영체제에도 사용되었습니다.
  2. cmd.exeWindows NT 32 nt비비( ( 64 트 os에에OS 64 ) 。 cmd.exe9x의 ..02 1.0에서 유래했습니다.cmd는 16비트로 단, 보호 으로, 명령어는 입니다.start가 상속되었습니다. Windows NT の windows windows windows windows windows windows 。cmdWindows NT(윈도우 NT) Win32(윈도우 NT) 32(윈도우 32)가 되었지만 /2는 1992년에 32비트가 되었습니다.cmd【16】OS/2 1.x 】
  3. ComSpec는 env가 하는 프로그램을 정의합니다..bat ★★★★★★★★★★★★★★★★★」.cmd로 「Win」(Win)으로 되어 있습니다.NT 터 nt nt nt ntcmd.exe
  4. cmd.exe와 하위 호환성이 있습니다.command.com.
  5. 「 」용으로 설계된 .cmd.exe라고 불릴 수 .cmdWindows 9x windows windows windows 。이 파일 이름 확장자는 OS/2 버전 1.0 및 1987로 거슬러 올라갑니다.

여기 리스트가 있습니다.cmd.exe되지 않는 command.com:

  • 긴 파일 이름(8.3 형식을 초과)
  • 명령어 이력
  • 탭 완료
  • 문자: " " " " 。^ (용도:\ & | > < ^)
  • 스택: " " " " :PUSHD/POPD
  • 수정산산:SET /A i+=1
  • 바꾸기/ "/"/"/"서브스트링:SET %varname:expression%
  • 치환: " " " " " :FOR /F( ('', ''))는 ''는 ''는 ''는 ''는''입니다
  • 능::CALL :label

실행 순서:

스크립트의 .bat 버전과 .cmd 버전(test.bat, test.cmd)이 모두 같은 폴더에 있고 확장자(test) 없이 스크립트를 실행하면 64비트 Windows 7에서도 기본적으로 스크립트의 .bat 버전이 실행됩니다.실행 순서는 PATHEXT 환경변수에 의해 제어됩니다.자세한 내용은 명령 프롬프트가 파일을 실행하는 순서를 참조하십시오.

참고 자료:

위키백과:명령 셸 비교

이러한 답변은 너무 길어서 대화형 사용에 중점을 두고 있습니다.스크립팅의 중요한 차이점은 다음과 같습니다.

  • .cmd는 NT 이외의 시스템에서 의도하지 않은 실행을 방지합니다.
  • .cmd는 삽입 명령어를 사용하여 성공 시 에러 레벨을 0으로 변경할 수 있도록 합니다.

별로 재미없죠?

에서는, 많은 추가 기능이 유효하게 되어 있었습니다..cmd명령 확장자라고 불리는 파일입니다.다만, 디폴트에서는, 양쪽 모두에 대해서 유효하게 되어 있습니다..bat ★★★★★★★★★★★★★★★★★」.cmdWindows 2000 windows windows 。

결론: 2012년 이후에는.cmd배타적으로

아니요, 전혀 문제가 되지 않습니다.NT에서는 .bat 확장자와 .cmd 확장자가 모두 cmd.exe 프로세서가 동일한 방식으로 파일을 처리합니다.

MS TechNet에서 제공하는 WinNT 클래스 시스템의 command.com과 cmd.exe에 대한 추가 정보(http://technet.microsoft.com/en-us/library/cc723564.aspx):

이 동작은 Windows NT의 매우 중요한 미묘한 기능을 나타냅니다.16비트 MS-DOS 쉘(COMMAND).Windows NT 에 부속되어 있는 COM) 는, Windows NT 전용으로 설계되어 있습니다.이 셸에서 실행을 위해 명령어를 입력해도 실제로는 실행되지 않습니다.대신 명령 텍스트를 패키징하여 32비트 CMD로 전송합니다.EXE 명령 셸을 실행합니다.모든 명령어는 CMD에 의해 실제로 실행되기 때문입니다.EXE(Windows NT 명령 셸), 16비트 셸은 완전한 Windows NT 셸의 모든 기능을 상속합니다.

RE: command.com 를 기동하는 것은, 조금 복잡한 수수께끼인 것 같습니다.

몇 달 전 프로젝트 진행 중에 CMD에서 실행하려는 일부 프로그램이 왜 있는지 알아내야 했습니다.EXE는 실제로 명령어로 실행되고 있었습니다.COM. 문제의 "프로그램"은 매우 오래된 것입니다.매일 실행되는 BAT 파일입니다.

배치 파일이 COMMAND에서 실행된 이유를 발견했습니다.COM은 에서 기동하고 있던 것입니다.PIF 파일(고대 파일도 있습니다).PIF를 통해서만 사용할 수 있는 특수한 메모리 구성 설정이 불필요해졌기 때문에 기존 데스크톱 바로 가기로 대체했습니다.

바로 가기에서 시작된 동일한 배치 파일이 CMD에서 실행됩니다.EXE. 생각해보면 이건 말이 돼요.파악에 시간이 걸린 것은 1998년부터 생산되고 있기 때문에 스타트업 그룹의 아이템이 PIF인 것을 잊어버린 탓도 있습니다.

다만, Windows 7 에서는, BAT 파일에도 이러한 차이가 있습니다.파일 TEST 를 작성한 적이 있는 경우.배트 및 테스트CMD는 같은 디렉토리에서 TEST를 실행하면 BAT 파일이 실행됩니다.

C:\>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

C:\Temp>echo echo bat > test.bat

C:\Temp>echo echo cmd > test.cmd

C:\Temp>test

C:\Temp>echo bat
bat

C:\Temp>

원래 게시물은 .bat 또는 .cmd 서픽스를 사용한 경우의 결과에 관한 것이었기 때문에 파일 내의 명령어가 반드시 필요한 것은 아닙니다.

.bat과 .cmd의 다른 한 가지 차이점은 파일명이 같고 확장자가 모두 같은 파일이 2개 존재하는 경우 다음과 같습니다.

  • 명령줄에 filename 또는 filename.bat을 입력하면 .bat 파일이 실행됩니다.

  • .filename 파일을 실행하려면 filename.filename을 입력해야 합니다.

배치로 동작하는 모든 것은 cmd로 동작합니다.cmd는 환경을 제어하기 위한 몇 가지 확장을 제공합니다.또한 cmd는 새로운 cmd 인터프리터로 실행되기 때문에 NTVDM 에뮬레이트된 16비트 환경에서 bat가 실행되기 때문에 (짧은 파일에서는 눈에 띄지 않습니다.

.bat 파일 실행은 .bat 오류 수준 변수에서는 명령 확장자의 영향을 받는 명령어로 변경될 수 있기 때문에 다릅니다.그게 다예요.

ComSpec 환경변수 값을 다음과 같이 변경하면%SystemRoot%system32\cmd.exe(CMD) 그럼 파일 확장자가.BAT아니면.CMD잘 모르겠지만 WinXP 이상에서는 디폴트일 수도 있습니다.

내선번호는 상관없습니다.

다르다COMMAND.COM 처리 vs " 파일 처리"CMD.EXE.

차이점:

.bat 파일은 실행되기 전에 메모리에 로드됩니다. .bat 파일은 행을 실행하고 다음 행을 읽고 해당 행을 실행합니다.

스크립트 파일을 실행한 후 실행이 완료되기 전에 편집할 수 있습니다.bat 파일은 이 때문에 엉망이 되지만 cmd 파일은 그렇지 않습니다.

언급URL : https://stackoverflow.com/questions/148968/windows-batch-files-bat-vs-cmd

반응형