배치 파일

Batch file
배치 파일
Batch file icon.png
파일 이름 확장자.bat,.cmd,.btm
인터넷 미디어 유형
  • application/bat
  • application/x-bat
  • application/x-msdos-program
  • text/plain
포맷의 종류스크립트 작성
컨테이너:스크립트

배치 파일은 DOS, OS/2Microsoft Windows의 스크립트 파일입니다.이 명령어는 명령줄 인터프리터에 의해 실행되는 일련의 명령어로 구성되며 일반 텍스트 파일에 저장됩니다.배치 파일에는 인터프리터가 대화식으로 받아들이는 임의의 명령어가 포함될 수 있으며 배치 파일 내에서 조건부 분기 및 루프를 가능하게 하는 다음과 같은 구성 요소를 사용할 수 있습니다.IF,FOR,그리고.GOTO 라벨. "배치"라는 용어는 "비인터랙티브 실행"을 의미하는 배치 처리에서 유래한 것이지만, 배치 파일은 여러 데이터의 배치를 처리하지 않을 수 있습니다.

메인프레임 및 미니컴퓨터 시스템의 JCL(Job Control Language), DCL 및 기타 시스템과 마찬가지로 배치 파일이 추가되어 사용자는 이를 자동화하는 스크립트를 셋업할 수 있기 때문에 특정 정기적인 작업에 필요한 작업을 쉽게 수행할 수 있습니다.배치 파일이 실행될 때 셸 프로그램(보통 COMMAND).COM 또는 cmd.exe)는 파일을 읽고 명령어를 실행합니다(보통은 한 [1]줄씩).Linux와 같은 Unix와 유사한 운영 체제에는 [2]스크립트라고 하는 유사하지만 더 유연한 파일 유형이 있습니다.

파일 이름 확장자 .bat은 DOS 및 Windows에서 사용됩니다.Windows NT 및 OS/2에서도 .cmd가 추가되었습니다.다른 환경의 배치 파일에는 확장자가 다를 수 있습니다.를 들어, 4DOS, 4OS2, 4NT 관련 셸의 .btm 등입니다.

배치 파일의 자세한 처리는 버전마다 크게 변경되었습니다.이 문서의 일부 세부 정보는 모든 배치 파일에 적용되며 다른 세부 정보는 특정 버전에만 적용됩니다.

변종

DOS

DOS에서 배치파일은 명령줄 인터페이스에서 이름을 입력하고 필요한 파라미터를 입력한 후↵ Enter 키를 누릅니다. DOS가 로드되면 AUTOEXEC 파일이 표시됩니다.BAT가 존재하는 경우 자동으로 실행되므로 DOS 환경을 설정하기 위해 실행해야 하는 모든 명령어가 이 파일에 배치될 수 있습니다.컴퓨터 사용자는 AUTOEXEC를 사용합니다.BAT 파일은 시스템 날짜와 시간을 설정하거나 DOS 환경을 초기화하거나 상주 프로그램 또는 디바이스 드라이버를 로드하거나 네트워크 연결 및 할당을 초기화합니다.

.bat 파일 이름 확장자는 명령어인터프리터에 의해 실행되는 명령어가 포함된 파일을 식별합니다.COM은 한 줄 한 줄 수동으로 입력된 명령어 목록처럼 기본 프로그래밍 기능을 위한 추가 배치 파일 고유 명령어를 사용하여GOTO회선실행플로우를변경하기위한명령어입니다.

초기 윈도

Microsoft Windows 는, 텍스트 베이스의 operating system에 그래픽 유저 인터페이스 베이스(GUI) 오버레이로서 1985년에 도입되어 DOS 로 동작하도록 설계되어 있습니다.이것을 시작하기 위해서WIN명령어가 사용되었습니다.이 명령어는 AUTOEXEC의 끝에 추가할 수 있습니다.Windows 자동 로드를 허용하는 BAT 파일.이전 버전에서는 MS-DOS 프롬프트에서 Windows에서 .bat 유형 파일을 실행할 수 있었습니다.Windows 3.1x 이전 및 Windows 9x에서 COMMAND가 호출되었습니다.배치 파일을 실행하는 COM.

OS/2

IBM OS/2 운영 체제는 DOS 스타일의 배치 파일을 지원했습니다.또한 고급 배치 파일 스크립팅 언어인 REXX 버전도 포함되어 있습니다.IBM과 Microsoft는 이 시스템을 개발하기 시작했지만, 이 시스템을 구축하는 동안 논쟁 끝에 해체되었습니다. 그 결과, IBM은 마이크로소프트에 대한 언급 없이 DOS와 같은 콘솔 셸을 참조했고, 이는 COMMAND에서 배치 파일이 작동하는 방식에 대해 아무런 차이가 없는 것으로 보입니다.COM

OS/2의 배치 파일 인터프리터는 EXTPROC 명령도 지원합니다.그러면 배치 파일이 EXTPROC 파일에 명명된 프로그램으로 데이터 파일로 전달됩니다.명명된 프로그램은 스크립트 파일일 수 있습니다.이는 Unix 계열 운영 체제에서 사용되는 #! 메커니즘과 유사합니다.

윈도 NT

Windows 98 이전과 달리 Windows NT 계열의 운영체제는 MS-DOS에 의존하지 않습니다.Windows NT는 에서 스크립트를 실행할 수 있는 확장 32비트 명령어인터프리터(cmd.exe)를 도입했습니다.CMD 또는BAT 내선번호Cmd.exe가 추가 명령을 추가하고 기존 명령을 약간 다른 방식으로 구현하여 동일한 배치 파일(확장자가 다른)이 cmd.exe 및 COMMAND에서 다르게 작동할 수 있도록 했습니다.COM. 대부분의 경우 지원되지 않는 몇 개의 명령어를 사용하지 않으면 동작은 동일합니다.Cmd.exe의 COMMAND 확장자.호환성을 위해 COM을 비활성화할 수 있습니다.

Microsoft 는, Windows 9x 및 ME 용 cmd.exe 의 버전을 WIN95CMD 로 릴리스 하고, 구버전의 Windows 유저가 특정 cmd.exe 스타일의 배치 파일을 사용할 수 있도록 했습니다.

윈도우즈 8에서 cmd.exe는 배치 파일의 일반 명령어 인터프리터(이전 COMMAND)입니다.COM은 16비트 프로그램을 [nb 1]실행할 수 있는 32비트 버전의 Windows에서도 실행할 수 있습니다.

파일 이름 확장자

.박쥐
Microsoft 가 배치 파일에 사용하는 최초의 파일명 확장자.이 확장 기능은 COMMAND에서 DOS 및 모든 버전의 Windows와 함께 실행됩니다.COM 또는 cmd.exe를 사용합니다.단, 2개의 명령어인터프리터가 배치파일을 실행하는 방법은 다릅니다.
.disclosed(비활성화)
Windows NT 패밀리의 배치 파일에 사용되며 해석을 위해 cmd.exe로 전송됩니다.명령어COM에서 이 파일 이름 확장자를 인식하지 못하므로 cmd.exe 스크립트는 잘못된 윈도우즈 환경에서 실수로 실행되지 않습니다.게다가.append,dpath,ftype,set,path,assoc그리고.prompt명령어를 .bat 파일에서 실행하면 명령어 값을 변경합니다.errorlevel에러에 의해서만 변화합니다만, .disc 파일내의 경우는,[3] 에러 없이 되돌아가도 에러 레벨에 영향을 줍니다.또한 IBM OS/2에서 배치 파일에 사용됩니다.
.btm
4DOS, 4OS2, 4NT Take Command에서 사용되는 확장자.이러한 스크립트는 한 [4]줄씩 로드되는 것이 아니라 완전히 실행할 수 있는 상태로 로드되기 때문에 특히 더 빠릅니다.

배치 파일 매개 변수

명령어COM 및 cmd.exe는 특수 변수를 지원합니다(%0,%1통해.%9) 배치 작업의 경로와 이름 및 배치 작업 내의 첫 번째9개의 호출 파라미터를 참조하려면 도 참조해 주세요.존재하지 않는 파라미터는 제로의 길이의 문자열로 대체됩니다.환경 변수와 유사하게 사용할 수 있지만 환경에 저장되지는 않습니다.Microsoft와 IBM은 이러한 변수를 대체 매개 변수 또는 대체 가능한 매개 변수라고 칭하며, Digital Research, Novell 및 Caldera는 이러한 변수를 대체 매개[5] 변수라는 용어를 확립했습니다.JP 소프트웨어는 이를 배치 파일 [6]매개 변수라고 합니다.

이 배치 파일의 예는,Hello World!는 사용자가 키를 누를 때까지 프롬프트를 표시하고 기다린 후 종료합니다.(주의: 변수를 사용하지 않는 한 명령어가 소문자인지 대문자인지는 상관없습니다.)

@ECHO OFF ECHO Hello World! 일시정지

파일을 실행하려면 파일 확장자 .bat(Windows NT 타입 운영 체제의 경우 .cmd)로 보통 Microsoft 메모장 등의 텍스트에디터나 일반 텍스트모드로 동작하는 워드프로세서를 사용하여 작성해야 합니다.

실행 시 다음과 같이 표시됩니다.

헬로 월드!아무 키나 눌러 계속 진행합니다.

설명.

인터프리터는 첫 번째 행부터 순서대로 각 행을 실행합니다.@임의의 행의 선두에 기호를 지정하면 실행 시 프롬프트에 해당 명령어가 표시되지 않습니다.명령어ECHO OFF는 프롬프트를 영구적으로 끄거나 다시 켜질 때까지 끕니다.조합된 것@ECHO OFF대부분의 경우 배치 파일의 첫 번째 줄에 해당하므로 명령어 자체를 표시할 수 없습니다.그런 다음 다음 행이 실행되고ECHO Hello World!명령어 출력Hello World!. 다음 행이 실행되어PAUSE명령어 표시Press any key to continue . . .스크립트 실행을 일시 중지합니다.키를 누르면 더 이상 명령이 없기 때문에 스크립트가 종료됩니다.Windows 에서는, 스크립트가 이미 실행중의 커맨드프롬프트 창에서 실행되고 있는 경우는, MS-DOS 와 같이 프롬프트로 창이 열린 채로 있습니다.그 이외의 경우는, 종료시에 창이 닫힙니다.

제한 및 예외

변수의 null 값

변수 확장은 명령어로 텍스트로 대체되므로 아무것도 포함하지 않는 변수는 구문에서 사라지며 공백이 포함된 변수는 여러 토큰으로 바뀝니다.이로 인해 구문 오류 또는 버그가 발생할 수 있습니다.

예를 들어 %foo%가 비어 있는 경우 다음 문장이 나타납니다.

IF %foo%== ECHO가 같음

잘못된 구성이라고 해석합니다.

IF == bar ECHO Equal

마찬가지로 만약%foo%포함하다abc def그러면 다른 구문 오류가 발생합니다.

IF abc def == bar ECHO Equal

이 문제를 방지하는 일반적인 방법은 변수 확장을 따옴표로 둘러싸서 빈 변수가 유효한 식으로 확장되도록 하는 것입니다.IF ""=="bar"환자 대신IF ==bar. 변수와 비교되는 텍스트도 따옴표로 묶어야 합니다.따옴표는 특별한 구분 구문이 아니기 때문입니다.이러한 문자는 그 자체를 나타냅니다.

%foo%=="bar" ECHO가 같은 경우

지연!VARILE! Windows 2000 이후에서는 이러한 구문 오류를 피하기 위해 확장 기능을 사용할 수 있습니다.이 경우 null 또는 multi-word 변수는 구문적으로 실패하지 않습니다.이는 IF 명령어가 해석된 후 값이 확장되기 때문입니다.

IF! foo!== 에코 균등

Windows 2000 이후의 다른 점은 빈 변수(정의되지 않음)가 대체되지 않는다는 것입니다.이전 예에서 설명한 바와 같이 이전 배치인터프리터의 동작으로 인해 빈 문자열이 생성되었을 수 있습니다.예:

C:\> MyVar= C:\> 에코 %MyVar% %MyVar% C:\> " (MyVar% 정의되어 있지 않은 경우) 또는 (MyVar가 %MyVar%인 경우)설정합니다.MyVar는 %MyVar%입니다.

Windows 2000 이전의 배치 인터프리터는 결과를 표시했을 것입니다.MyVar is not defined.

전달된 문자열의 따옴표와 공백

셸에 의해 이미 문자열 배열로 분할된 명령줄 인수를 수신하는 Unix/POSIX 프로세스와 달리 Windows 프로세스는 GetCommandLine API 함수를 통해 명령줄 전체를 단일 문자열로 수신합니다.그 결과 각 Windows 응용 프로그램은 자체 파서를 구현하여 명령줄 전체를 인수로 분할할 수 있습니다.많은 응용 프로그램 및 명령줄 도구가 이를 위해 자체 구문을 발전시켰기 때문에 Windows 명령줄에서 메타문자를 인용하거나 이스케이프하는 규칙은 없습니다.

  • 일부 명령어에서는 공백이 따옴표로 둘러싸이지 않는 한 공백은 인수를 구분하는 구분자로 취급됩니다.따옴표를 응용 프로그램에 전달하는 방법에는 다음과 같은 다양한 규칙이 있습니다.
    • CommandLineToArgVW 함수의 Microsoft Visual C++ 런타임 라이브러리에 내장된 명령줄 파서에 의해 널리 사용되는 규칙이 구현됩니다.이것은 2라는 관례를 사용한다.n백슬래시 뒤에 따옴표(")가 표시됩니다.n백슬래시 뒤에 시작/끝 따옴표가 붙는 반면 (2).n)+1개의 백슬래시 뒤에 따옴표가 붙으면 다시 n개의 백슬래시 뒤에 따옴표 리터럴이 생성됩니다.같은 표기법이 의 일부입니다.NET Framework 사양.[7]
      • 문서화되지 않은 측면은 이다.따옴표로 묶인 문자열의 중간에 발생하는 "는 단일 따옴표를 생성합니다.[7] (2008년 CRT 변경으로 [msvcr90]에서 이 문서화되어 있지 않은 따옴표 처리가 수정되었습니다.)[8]이것은, 「」, 「」등의 cmd 메타 문자의 해석을 유효하게 하지 않고, 인수에 따옴표를 삽입하는 경우에 도움이 됩니다(cmd는 통상의 「」를 「인수의 이스케이프」로서 인식하지 않습니다).그러면 인용문이 끝났다고 생각하고 인용문을 볼 때 이러한 특별한 의미를 다시 갖게 됩니다.)
    • 또 다른 규칙은 단일 따옴표(")가 문자열의 일부로 포함되지 않는다는 것입니다.단,[citation needed] 이스케이프 따옴표("")는 문자열의 일부일 수 있습니다.
    • 또 다른 일반적인 관습은 Cygwin에서 파생된 이식 프로그램을 사용하는 것입니다.따옴표 앞에 발생하는 백슬래시와 따옴표 앞에 발생하는 백슬래시는 구분하지 않습니다.이러한 대체 명령줄 [9]파서에 대한 자세한 내용은 glob (programming)© Windows and DOS 를 참조해 주세요.
    • 다음과 같은 Windows의 중요한 명령어cmd.exe그리고.wscript.exe독자적인 [8]규칙을 사용합니다.
  • 다른 명령어에서는 공백은 딜리미터로 취급되지 않으므로 따옴표는 필요 없습니다.따옴표가 포함된 경우 따옴표는 문자열의 일부가 됩니다.이는 echo 등의 내장 명령어에 적용됩니다.

문자열에 따옴표가 포함되어 따옴표로 묶어야 하는 다른 텍스트 행에 삽입해야 하는 경우 따옴표 메커니즘에 특히 주의해야 합니다.

C:\>set foo=" 문자열은 따옴표로 둘러싸여 있습니다" C:\>echo "test 1 %foo%" "test 1 "이 문자열은 따옴표로 둘러싸여 있습니다" C:\> event create /T Warning / ID 1 / L System / SO "SO "Source " / D " : %foo%%" 오류 / String " 인수: "가 잘못되었습니다.사용법에 대해 "EVENTCREATE /?"를 입력합니다. 

Windows 2000 이후에서는, 1 개의 값내에 있는 따옴표 문자를, 다음의 3 개의 따옴표로 치환합니다.

C:\>set foo="이 문자열은 따옴표로 둘러싸여 있습니다" C:\> set foo=%foo:"="% C:\>"echo "test 1 %foo%" "test 1" "이 문자열은 따옴표로 둘러싸여 있습니다" C:\> event create / T Warning / ID 1 / L System / SO "Source %D" 

문자열 이스케이프 문자

파이프 등 일부 문자( ) 문자는 명령줄에 특별한 의미를 가집니다.carlet ^ 기호를 사용하여 이스케이프하지 않는 한 ECHO 명령을 사용하여 텍스트로 인쇄할 수 없습니다.

C:\> Echo foo bar 'bar'는 내부 또는 외부 명령어, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.C:\>메아리 foo^바 foo바

그러나 이스케이프된 문자를 환경변수에 삽입할 때 이스케이프는 예상대로 작동하지 않습니다.이 변수에는 에코만 하면 라이브 파이프 명령이 포함됩니다.변수의 텍스트로 문자를 표시하려면 캐럿 자체와 이스케이프 문자를 모두 이스케이프해야 합니다.

C:\>set foo=bar baz 'baz'는 내부 또는 외부 명령어, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.C:\> set foo=bar ^ bar C:\> 에코 %foo% 'baz'는 내부 또는 외부 명령어, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.C:\>foo=bar를 설정합니다^^^ baz C:\> 에코 %foo% baz

명령어가 해석된 후 변수 값이 확장되기 때문에 Windows 2000 이후 또는 에서 사용할 수 있는 지연된 확장을 사용하여 환경변수에 저장된 특수문자를 표시할 수 있습니다.

C:\>cmd/V:Microsoft Windows [버전 6.1.7601]저작권 (c) 2009 Microsoft Corporation. 모든 권리 보유.C:\>foo=bar 설정^ baz C:\> 에코! boo! bar baz

sleep 또는 스크립트 지연

Windows Vista에서 TIMOUT 명령어가 도입될 때까지 PAUSE 명령어는 임의의 키를 누를 때까지 스크립트의 액티비티를 무기한 정지하기 때문에 타임아웃 명령어를 도입하는 것은 쉬운 방법이 없었습니다.

많은 회피책이 [10]가능했지만 일반적으로 일부 환경에서만 효과가 있었습니다.CHOICE이전 버전의 DOS에서는 명령어를 사용할 수 없었습니다.PINGTCP/IP 가 인스톨 되어 있는 경우 등에서만 사용할 수 있었습니다.Microsoft 에서는 솔루션을 이용할 수 없었지만, 다수의 소규모 유틸리티 프로그램을 다른 소스에서 설치할 수 있었습니다.상용 예로는 1988 Norton Utilities Batch Enhancer(BE) 명령어를 들 수 있습니다.BE DELAY 181초 동안 기다리거나 94바이트의 무료 WAIT를 기다립니다.COM[11] 위치WAIT 55초간 기다렸다가 스크립트로 돌아갑니다.이러한 프로그램의 대부분은 16비트입니다.COM 파일은 64비트 Windows와 호환되지 않습니다.

CR/LF가 제거된 텍스트 출력

일반적으로 인쇄된 모든 텍스트에는 캐리지 리턴(CR) 및 라인 피드(LF)의 제어 문자가 각 행의 끝에 자동으로 추가됩니다.

  • batchtest.bat
    @syslog foo @syslog bar
    C:\>batchtest.bat foo

2개의 에코 명령어가 같은 명령줄을 공유해도 상관없습니다.CR/LF 코드가 삽입되어 출력이 다른 행으로 분할됩니다.

C:\>@echo 메시지1&@echo 메시지2 메시지1 메시지2

Windows 2000 이후에서는, 특수한 입력 프롬프트를 사용해 텍스트를 CR/LF 로 끝맺지 않고 출력하는 방법이 있습니다.이 예에서는 CR/LF는 메시지1을 따르지 않고 회선2 및 회선3을 따릅니다.

  • 배치 테스트 2.bat
    @secho off set /p = "Message 1" <nul echo 메시지2 에코 메시지3
    C:\>batchtest 2.bat 메시지1 메시지2 메시지 3

이 명령을 사용하여 끝에 CR/LF를 추가하지 않고 텍스트 파일로 데이터를 출력할 수 있습니다.

C:\> set /p = "Message 1" <nul > data.txt C:\> set /p = "Message 2" <nul > data.txt C:\> set /p = "Message 3" <nul > data.txt C:\>데이터를 입력합니다.txt 메시지1 Message 2 Message 3

단, 이 제거된 CR/LF 프롬프트 출력을 환경변수에 직접 주입하는 방법은 없습니다.

바로 가기에서 Uniform Naming Configuration(UNC; 통일 명명 규칙) 작업 디렉토리 설정

현재 작업 디렉토리로 UNC 경로를 사용하는 명령 프롬프트는 사용할 수 없습니다.\\server\share\directory\

명령 프롬프트에서는 작업 디렉토리를 할당하기 위해 드라이브 문자를 사용해야 하므로 서버 UNC 공유에 저장된 복잡한 배치 파일을 실행하는 것이 더 어려워집니다.배치 파일은 UNC 파일 경로에서 실행할 수 있지만 작업 디렉토리 기본값은 다음과 같습니다.C:\Windows\System32\.

Windows 2000 이후에서는 명령 확장과 함께및 [nb 2]명령어를 사용하는 회피책이 있습니다.

디폴트로 유효하게 되어 있지 않은 경우, 명령어 확장을 일시적으로 유효하게 할 수 있습니다./E:ON명령어 인터프리터용 스위치.

따라서 UNC 공유에서 배치 파일을 실행하고 UNC 공유에 임시 드라이브 문자를 할당하고 UNC 공유를 배치 파일의 작업 디렉터리로 사용하려면 다음과 같은 윈도우즈 바로 가기를 구성할 수 있습니다.

  • 대상:

이 바로 가기의 작업 디렉토리 속성은 무시됩니다.

이것에 의해, Windows Vista 이후의 유저 어카운트 컨트롤(UAC)에 관한 문제도 해결됩니다.관리자가 로그온하여 UAC가 활성화되어 있을 때 오른쪽 클릭 파일의 컨텍스트메뉴를 사용하여 네트워크 드라이브 문자에서 관리자로 배치파일을 실행하려고 하면 작업이 예기치 않게 실패합니다.이는 UAC 권한 있는 계정 컨텍스트에 네트워크 드라이브 문자가 할당되어 있지 않고 탐색기 셸 또는 로그온 스크립트를 통해 컨텍스트의 드라이브 문자를 할당할 수 없기 때문입니다.단, 위의 내용을 사용하여 배치파일에 대한 바로 가기를 만듭니다.PUSHD/POPD관리자 권한으로 배치 파일을 실행하는 바로 가기를 사용하여 임시 드라이브 문자가 생성 및 삭제되고 배치 파일이 올바르게 작동합니다.

다음 구문은 현재 배치 스크립트의 경로로 올바르게 확장됩니다.

%~dp0

UNC 기본 경로는 이전 프로그램을 [12]크래시하는 데 사용되었기 때문에 기본적으로 해제되어 있습니다.

Dword 레지스트리 값DisableUNCCheckHKEY_CURRENT_USER\Software\Microsoft\Command Processor[12] 에서는, 디폴트의 디렉토리를 UNC 로 할 수 있습니다.CD명령어는 변경을 거부하지만 Cmd 바로가기 또는 Start 명령어를 사용하여 기본 디렉토리에 UNC 경로를 배치합니다.(C$공유는 관리자용입니다).

문자 집합

배치 파일은 컴퓨터에 의해 정의된 OEM 문자 집합을 사용합니다(예: 코드 페이지 437).이들 중 ASCII 이외의 부분은 Windows에서 사용되는 Unicode 또는 Windows 문자 집합과 호환되지 않으므로 [13]주의가 필요합니다.영어 이외의 파일명은, DOS 문자 세트 호환 에디터를 개입시켜 입력했을 경우에만 기능합니다.이 세트 이외의 문자가 있는 파일명은, 배치 파일에서는 동작하지 않습니다.

코드 페이지 437이 아닌 Unicode 명령어프롬프트를 표시하려면cmd /U명령어를 입력합니다.이러한 명령 프롬프트에서는 Unicode 파일 이름을 가진 배치 파일이 작동합니다.또한 사용할 수 있습니다.cmd /U유니코드를 문자 집합으로 사용하여 명령을 직접 실행합니다.예를들면,cmd /U /C dir > files.txt는, UTF-16LE 인코딩으로 올바른 Windows 문자의 디렉토리 리스트를 포함한 파일을 작성합니다.

바이러스 및 악성 프로그램 배치

다른 프로그래밍 언어와 마찬가지로 배치 파일이 악의적으로 사용될 수 있습니다.간단한 트로이 목마 및 포크 폭탄을 쉽게 만들 수 있으며, 배치 파일은 호스트 파일을 수정하여 DNS 포이즈닝의 형태를 취할 수 있습니다.배치 바이러스는 Windows의 자동 실행 [14]기능을 사용하여 USB 플래시 드라이브를 통해 전파될 수도 있습니다.

배치 파일의 다음 명령은 확인을 요청하지 않고 현재 디렉토리(폴더)의 모든 데이터를 삭제합니다.

del /Q **

다음 3가지 명령어는 시스템 자원을 고갈시키기 위해 지속적으로 자신을 복제하여 시스템이 느려지거나 크래시되는 단순한 포크 폭탄입니다.

:정상  개시하다 "" %0  에 가다 정상 

기타 Windows 스크립트 언어

cmd..cmd 파일을 해석하는 exe 명령 프로세서는 Windows 10. COMMAND 이상의 모든 32비트 및 64비트 버전에서 지원됩니다.EXE, 를 해석합니다.BAT 파일은 최소 Windows [nb 3]10까지의 모든 16비트 및 32비트 버전에서 지원되었습니다.

Windows에서 사용할 수 있는 다른 스크립트 언어, 최신 스크립트 언어 및 더 강력한 스크립트 언어가 있습니다.단, 스크립트 언어 인터프리터를 사용하려면 먼저 스크립트 언어 인터프리터를 설치해야 합니다.

  • KiXtart(.kix) - 1991년에 마이크로소프트 직원이 개발한.특히 네트워크 로그온 스크립트에서 유용한 명령어를 필요로 하는 동시에 .cmd 파일의 단순한 '느낌'을 유지합니다.
  • Windows Script Host (.vbs , .js.wsf) - 1998년에 Microsoft에 의해 출시되었으며 cscript로 구성되어 있습니다.exe 및 wscript.exe는 VBScript 또는 JScript로 작성된 스크립트를 실행합니다.wscript를 사용하여 윈도우 모드로 실행할 수 있습니다.또는 콘솔 기반 모드(cscript 사용)로 설정합니다.exe 호스트).Windows 98부터 Windows의 일부입니다.
  • PowerShell (.ps1) - 2006년에 Microsoft에 의해 출시되어 Windows XP(SP2/SP3) 이후 버전에서 동작할 수 있습니다.PowerShell은 명령줄 인터페이스와 저장된 스크립트를 통해 양방향으로 작동할 수 있으며 Unix [15]쉘과 매우 유사합니다.
  • Unix 형식의 셸 스크립팅 언어는 Cygwin 등의 Unix 호환성 도구가 설치된 경우 사용할 수 있습니다.
  • Perl, Python, Ruby, Rexx, Node.js PHP를 포함한 크로스 플랫폼 스크립팅 도구를 Windows에서 사용할 수 있습니다.

확장자가 없는 파일명을 입력하면 스크립트파일이 실행됩니다.예를 들어, 다음과 같은 해석에 적용되는 우선 순위 규칙이 있습니다.DoThis한다면DoThis.com,DoThis.exe,DoThis.bat,DoThis.cmd, 등이 존재합니다.디폴트로는DoThis.com priority가 가장 높습니다.이 기본 순서는 사용자가 설정할 수 있는 PATHEXT 환경변수에 의해 새로운 운영체제에서 변경될 수 있습니다.

「 」를 참조해 주세요.

메모들

  1. ^ COMMAND를 확인합니다.(\WINDOWS\SYSTEM32 디렉터리에 있는) COM을 계속 사용할 수 있습니다.COMMAND.COM32비트 Windows 7 명령 프롬프트에 표시됩니다.
  2. ^ "명령어 확장을 활성화하면 PUSHD 명령은 일반 드라이브 문자와 경로 외에 네트워크 경로를 허용합니다.네트워크 경로가 지정된 경우 PUSHD는 지정된 네트워크 리소스를 가리키는 임시 드라이브 문자를 생성한 다음 새로 정의된 드라이브 문자를 사용하여 현재 드라이브 및 디렉터리를 변경합니다.임시 드라이브 문자는 Z: 이후부터 처음 발견된 미사용 드라이브 문자를 사용하여 할당됩니다." --Windows 7의 PUSHD 도움말
  3. ^ CMD의 가용성.EXE 및 명령어COM은 Windows(COMMAND)의 모든 버전에서 COMMAND를 호출하여 확인할 수 있습니다.COM은 64비트 버전이 아닙니다.16비트 프로그램을 지원하는 옵션이 있는 경우 Windows 8 32비트 버전에서만 사용할 수 있습니다).

레퍼런스

  1. ^ "Using batch files: Scripting; Management Services". Technet.microsoft.com. 2005-01-21. Retrieved 2012-11-30.
  2. ^ Henry-Stocker, Sandra (2007-07-18). "Use your Unix scripting skills to write a batch file". itworld.com. IT World. Retrieved 2018-06-13.
  3. ^ "Difference between bat and cmd WWoIT - Wayne's World of IT". waynes-world-it.blogspot.fr. 2012-11-15. Retrieved 2012-11-30.
  4. ^ "btm file extension :: all about the .btm file type". Cryer.co.uk. Retrieved 2012-11-30.
  5. ^ Caldera DR-DOS 7.02 User Guide, Caldera, Inc., 1998 [1993, 1997], archived from the original on 2016-11-05, retrieved 2013-08-10
  6. ^ Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 online help.
  7. ^ a b ".NET Core Runtime: System.Diagnostics.Process.Unix". GitHub. Retrieved 2020-02-11. Two consecutive double quotes inside an inQuotes region should result in a literal double quote (the parser is left in the inQuotes region). This behavior is not part of the spec of code:ParseArgumentsIntoList, but is compatible with CRT and .NET Framework.
  8. ^ a b Deley, David. "How Command Line Parameters Are Parsed".
  9. ^ "Child process documentation, section Windows Command Line, NodeJS PR #29576". GitHub. Retrieved 2020-02-11.
  10. ^ "지연 방법", ericphelps.com
  11. ^ DOS용 유틸리티, WAIT.Z 링크IP(WAIT의 아카이브).COM) 및 기타 프로그램
  12. ^ a b https://support.microsoft.com/en-us/kb/156276[데드링크]
  13. ^ Chen, Raymond. "Keep your eye on the code page". Microsoft.
  14. ^ http://www.explorehacking.com/2011/01/batch-files-art-of-creating-viruses.html
  15. ^ "Windows PowerShell - Unix comes to Windows". Geekswithblogs.net. Retrieved 2012-11-30.

외부 링크