[include(틀:상위 문서, top1=명령 프롬프트)] [목차] == 개요 == 명령 프롬프트의 명령어를 정리한 문서이다. 명령 프롬프트 인터프리터(cmd.exe) 자체 내장 명령어가 아닌 것들은 {{{[*]}}} 표시. 해당 명령어들은 외부의 *.exe 파일을 실행해서 동작하는 명령어들이며 {{{command.com}}}, {{{cmd.exe}}}와 같은 터미널만 존재하는 경우(PATH 변수와 pwd에 아무것도 없는 경우) 동작하지 않는다. == TSKILL \[\*\] == {{{#!syntax powershell tskill "<프로세스 이름>"}}} TASKKILL과 비슷하지만 기능이 적다. 강제로 종료하는 기능도 없다. 프로세스 이름 끝에 .EXE를 붙이지 않는다. == Taskkill \[\*\] == {{{#!syntax powershell taskkill /f /im "<프로세스 이름>" /pid "<프로세스의 PID 번호>" /t /fi "<필터 값>"}}} || 옵션 || 설명 || || /f ||프로세스를 강제로 종료한다. || || /im ||종료할 프로세스의 이름을 지정한다. || || /pid ||종료할 프로세스의 PID(프로세스 식별자)를 지정한다. || || /t ||지정된 프로세스와 그 프로세스로부터 시작된 모든 자식 프로세스를 종료한다. || || /fi ||지정한 조건에 해당하는 프로세스를 종료한다. 이를 이용해 특정 서비스를 종료할 수 있다. || 이 명령어로 시스템 중요 프로세스를 종료시키면 Windows가 먹통이 되거나 종료된다. 이 명령어를 사용하여 explorer.exe을 강제 종료시키는 배치 파일을 만들면 Windows Defender가 바이러스로 인식한다. 예시: 현재 실행되고 있는 '''모든''' 메모장을 '''강제로''' 종료한다.{{{#!syntax powershell taskkill /f /im notepad.exe}}} === Tasklist \[\*\] === {{{#!syntax powershell tasklist}}} 현재 실행되고 있는 모든 프로세스들을 프롬프트 창에 띄워준다. taskkill 명령을 실행할 때 편리한 기능 중 하나다. 예시: 실행되어 있는 시스템 프로세스들을 나열한다.{{{#!syntax powershell tasklist /fi "USERNAME ne NT AUTHORITY\SYSTEM" /fi "STATUS eq running"}}} 예시: 실행되고 있는 프로세스들을 모두 나열한다.{{{#!syntax powershell tasklist /fi "STATUS eq running"}}} == shutdown \[\*\] == {{{#!syntax powershell shutdown /s /t /c "<주석>" /f}}} || 옵션 || 설명 || || /a ||예약되어있는 종료의 예약을 취소한다. 다른 옵션들을 쓸 수 없다. || || /s ||컴퓨터를 종료한다. 재시동인 /r 옵션과 같이 쓸 수 없다. || || /r ||컴퓨터를 종료하고 다시 시작한다. 종료인 /s 옵션과 같이 쓸 수 없다. || || /t ||컴퓨터를 지정된 시간[* 초 단위. 최대값은 315,360,000초(10년)이다.~~10년 동안 켜놓을 수 있을까 10년 후에 그 컴으로 중요한 작업하고 있는데 꺼지면 낭패이다~~] 후 종료하도록 예약한다. || || /c ||다시 시작 또는 종료의 원인을 설명하는 주석을 단다. 최대 512자까지 쓸 수 있다. 꼭 "" 로 열고 닫아야 한다. Windows XP 기준 시스템 종료 타이머 창에 이 메시지가 나타난다. || || /f ||사용자에게 미리 경고하지 않고 실행 중인 모든 프로세스들을 강제로 닫는다. || || /i ||원격 컴퓨터 종료 도구를 실행한다. [[GUI]] 형식이며 다른 컴퓨터를 종료시킬 수도 있다. || 예시: 1시간 후 "외출" 이라는 이유로 종료된다.{{{#!syntax powershell shutdown /s /t 3600 /c "외출" /f}}} 다만 일부 모델의 경우 한국어로 종료 이유를 입력할 경우 [[문자 깨짐|글자가 깨져서 나오는 경우가 있다]]. == rd(rmdir) == {{{#!syntax powershell rd "<경로>" /s /q}}}{{{#!syntax powershell rmdir "<경로>" /s /q}}} || 옵션 || 설명 || || /s ||지정된 폴더 자체와 그 안의 모든 폴더 및 파일을 지운다. 이 옵션을 설정하지 않으면 빈 폴더가 아닌 이상 삭제되지 않는다. || || /q ||/s 옵션으로 폴더 트리를 지우는 데 문제가 없으면 다시 묻지 않는다. || 예시: [[cmd /c rd /s /q c:\\|C 드라이브의 모든 하위 디렉터리와 파일을 지운다.]] 시스템 중요 파일, 폴더들은 관리자 권한이 있다 하더라도 접근이 거부된다.{{{#!syntax powershell rd C:\ /s /q}}} == del == {{{#!syntax powershell del /p /f /s /q "<파일 이름>"}}}{{{#!syntax powershell erase /p /f /s /q "<파일 이름>"}}} || 옵션 || 설명 || || /p ||각 파일을 삭제하기 전에 삭제를 확인하는 메시지를 표시한다. || || /f ||읽기 전용 파일을 삭제한다. || || /s ||지정된 파일을 모든 하위 디렉터리에서 삭제한다.[* 예로 하나를 든다면, del "C:\file.txt" /s /q 라는 명령을 주면 C 드라이브 내의 file.txt라는 이름을 가진 파일들을 몽땅 삭제한다. C드라이브를 전체적으로 스캔하니 시간도 오래 걸린다.] || || /q ||삭제할 것인지 묻지 않는다. || 예시: C 드라이브 내의 .avi 확장자를 가진 모든 파일을 삭제한다. 관리자 권한으로 실행하면 읽기 불가 시스템 폴더들도 모두 스캔한다.{{{#!syntax powershell del /s /q "C:\*.avi"}}} == ren == {{{#!syntax powershell ren "<파일 경로>\<파일 이름과 확장자>" "<바꿀 파일 이름과 확장자>"}}} 확장자들을 한꺼번에 변경시킬 수 있으므로 시간을 절약할 수 있는 명령어. 이 명령어를 모르는 컴맹들은 직접 하나하나 확장자를 바꿔야 했다. 옵션이 없는 명령어이다. 예시: 명령을 실행한 폴더 내의 모든 파일의 확장자를 .aaa 로 바꾼다. [[랜섬웨어]]가 막 등장했을 때, 확장자가 랜섬웨어에 등록되어 있지 않으면 암호화를 하지 않는 방식이었기 때문에 사용'''됐었다.''' 최근에 나온 랜섬웨어들은 파일 헤더를 읽어서 암호화 하기 때문에 전혀 먹히지 않는다.{{{#!syntax powershell ren *.* *.aaa}}} == copy == {{{#!syntax powershell copy /y /b "<원본>" "<대상>"}}} 하나 이상의 파일을 복사한다. {{{+}}}를 사용하면 파일들을 합칠 수 있다. || 옵션 || 설명 || || /y ||대상 파일이 이미 있으면 덮어쓴다. || || /-y ||대상 파일이 이미 있으면 덮어쓰지 않는다. || || /b ||바이너리 파일이라고 표시한다. 단순 복사는 붙이지 않아도 되지만 후술할 파일 합체 시에는 텍스트 화일이 아니라 이미지, 아카이브 등의 파일이라면 이 스위치를 붙여주어야 정상 작동이 된다. || 예시: 1,2,3.txt 의 내용들을 합쳐서 merge.txt에 저장한다. 원본 파일은 손실되지 않는다.{{{#!syntax powershell copy /b "1.txt + 2.txt + 3.txt" "merge.txt"}}} ||<-2> 파일 내용 || || 1 || 123 || || 2 || 456 || || 3 || 789 || || merge || 123456789[* 빈칸 없이 바로 붙인다.] || 예시: 현재 디렉토리의 모든 파일을 C: 드라이브 루트로 복사한다.{{{#!syntax powershell copy . C:\}}} 예시: image.jpg 와 archive.zip을 compressed.jpg 파일 하나로 합친다. 이 경우 jpg 확장자일 때는 이미지로 표시되지만 이름 수정으로 zip 확장자로 변경할 시 압축 파일로 인식된다. 이미지 파일 안에 압축 파일을 숨기는 방법으로 이용된다.[* Windows 7 32비트 기준 이미지는 정상 출력되나 압축 파일로는 인식하지 않는다. 이 경우 별도 압축 해제 프로그램이 필요하다.]{{{#!syntax powershell copy /b image.jpg + archive.zip compressed.jpg}}} == xcopy \[\*\]\ == >xcopy "원본" "대상" [/a|/m] [/d:날짜] [/w] [/s] [/c] [/i] [/f] [/h] [/u] [/y|/-y] 파일과 디렉터리 트리를 복사한다. || 옵션 || 설명 || || /a || 보관 특성을 가진 파일만 복사하며 보관 특성을 수정하지 않는다. || || /m || 보관 특성을 가진 원본 파일만 복사하며 보관 특성을 지운다. || || /d:m-d-y || 지정된 날짜 이후에 바뀐 파일을 복사한다. 날짜 없이 /d 만 지정하면 대상 파일보다 새로운 원본 파일만 복사한다. || || /w || 각 파일을 복사하기 전에 아무 키나 누르게 한다. || || /s || 비어 있지 않은 폴더와 하위 폴더들을 모조리 복사한다. [* 이 스위치가 없으면 빈 폴더만 복사한다. 모두 복사하려면 이 스위치를 반드시 주어야 한다.] || || /c || 오류가 생겨도 복사를 진행한다. || || /i || 대상을 찾을 수 없고 두 파일 이상을 복사하면 대상을 디렉터리로 지정한다. || || /f || 복사하는 동안 원본과 대상 파일의 전체 경로를 표시한다. || || /h || 숨김 파일과 시스템 파일도 복사한다. || || /u || 대상에 이미 있는 파일을 업데이트한다. || || /y || 이미 있는 대상 파일을 덮어쓸지 묻지 않는다. || || /-y || 이미 있는 대상 파일을 덮어쓸지 묻지 않는다. || >예 >xcopy "C:\\File\\" "D:\\Files\\" /s /c /h /y C드라이브 내의 File 폴더와 그 폴더 내의 모든 하위 디렉터리를 D:\Files 로 복사한다. 복사 도중 오류가 생겨도 계속 진행한다. 숨김 파일과 시스템 파일도 모두 복사한다. D:\Files\ 에 이미 같은 이름의 파일/폴더가 있어도 덮어쓴다. == dir == >dir ["경로"] [/a[\[\:\]특성]\] [/p] [/q] [/s] [/w] 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여준다. || 옵션 || 설명 || || /a:특성 || 지정된 특성을 가진 파일'''만''' 보여준다. 특성을 지정하지 않았을 경우에는 모든 파일을 보여준다. {{{#!folding 특성 [펼치기/접기] || 특성 || 설명 || || D || 디렉터리 || || H || 숨겨진 파일 || || S || 시스템 파일 || || R || 읽기 전용 파일 || || A || 보관된 파일 || || O || 오프라인 파일[* 숫자 0이 아닌 대문자 O이다.] || }}} || || /p || 정보가 화면에 꽉 차면 잠시 정지한다. || || /q || 파일의 소유자를 보여준다. --무쓸모-- || || /s || 지정한 디렉터리와 하위 디렉터리를 포함하여 보여준다. || || /w || 화일 이름만 보여준다. 넓게 나온다. || >예 >dir "C:\\Users\\user" /a /s /p C 드라이브의 User 사용자 폴더 내와 모든 하위 디렉터리의 파일들을 보여준다.[* 숨김 파일,시스템 파일,보관 파일 등 모두 포함] 화면이 가득 차면 잠시 멈춘다. >예 >dir /a:h 해당 명령어를 실행한 폴더 내의 (h) 숨김 파일, 폴더들만 리스트로 --친절하게-- 정리한다. == TREE == > TREE [경로] [/F] [/A] || 옵션 || 설명 || || /F ||파일을 포함하여 출력한다. || || /A ||그래픽 문자대신 ASCII 코드로 된 문자로 표시해준다. || 폴더 구조를 화면에 표시해준다. >예 >tree C:\\Users\\user /f C 드라이브의 User 사용자 폴더 구조를 파일을 포함하여 보여준다. == HELP == >HELP [명령어] || 명령어 || 해당 명령어에 대한 도움말을 보여준다. || 참고로 MS-DOS 6.2는 설명서처럼 친절하게 설명하고 주의사항과 참고사항까지 자세하게 적혀있는데, Windows NT는 그냥 HELP이라고 쓰면 ~~MS-DOS 5.0마냥~~ 단순한 명령어 목록과 요약만 적혀있다. == PROMPT == > PROMPT [프롬프트] || 스위치 || 설명 || || 프롬프트 || 터미널의 프롬프트를 지정한다. 일부 특수문자는 따로 처리를 해야 작동한다. 지정하지 않으면 기본값이 적용된다. || {{{C:\>}}}를 변경할 수 있다. MS-DOS 중간 버전부터 Windows 10까지 모두 있는 명령어이다. > PROMPT $n$g MS-DOS 4.x풍으로 되돌가간 느낌이 나게 해 준다. {{{C:\>}}} 대신 {{{C>}}}이 나온다. >PROMPT 명령어: 이렇게 지정하면 다음과 같이 된다. > C:\\>prompt 명령어: > > 명령어: copy a.txt c:\\ > 1개 파일이 복사되었습니다. > > 명령어: == SET == > SET [/a] [/p] 변수명=내용 || 옵션 || 설명 || || /a || 변수를 정의하는 데 표현식을 사용한다. /p 스위치와 함께 쓸 수 없다. || || /p || 주로 입력을 받을 때 사용되는 스위치이다. '<'와 함께 사용하면 해당 파일의 첫 줄을 가져와 변수로 설정한다. 도스에는 없다. || 변수를 정의한다. %변수명%로 호출할 수 있다. >예: >set /p "변수=>" 화면에 ">"를 띄운 후 입력받는다. 입력한 내용은 "변수" 변수로 선언된다. >set /p 파일=<"C:\Windows\Temp\1.txt" C:\Windows\Temp\1.txt 의 첫 줄을 "파일" 변수로 선언한다. {{{#!folding 자세히 보기 [펼치기/접기] >1.txt >123456 >789012 > >set /p 파일=<"1.txt" >echo %파일% >{{{#gray 출력값: 123456}}} }}} >set /a 결과=280*2 280*2의 결과를 "결과" 변수로 설언한다. >set /a number=%random% %% 9 + 1 1~9 사이의 난수를 "number" 변수로 선언한다. === replace \[\*\]\ === >사용법: > >set 변수=writed! >{{{#gray "변수"의 값은 writed!이다. }}} >set 변수=%변수:write=sette% >{{{#gray 밑 줄에서 "변수" 내의 값 중 write를 sette로 바꾸라는 명령을 한다.}}} >echo %변수% >{{{#gray 출력 값은 setted이다.}}} == 그 외 == 명령 프롬프트의 기본 기능 외의 명령어들을 서술한다. === MS-DOS 하위 호환용 명령어 === 명령 프롬프트에서도 쓸 수 있으나 이 명령어들은 모두 16비트 구조이기 때문에 32비트 윈도우에만 있다. ==== MEM ==== > MEM 메모리 사용량을 보여준다. 여담으로 Windows 7에서는 인터페이스가 MS-DOS '''5.0'''(최신 버전은 6.2) 인터페이스이다(...). 16비트 프로그램이기 때문에 NTVDM에서 949 코드페이지(완성형 한글)를 지원하지 않는 Windows Vista 이상의 운영체제는 영어로 나온다. === exit === 명령 프롬프트를 종료한다. == powershell \[\*\]\ == 명령 프롬프트 창에서 윈도우 파워 쉘을 호출한다. exit 명령어로 파워 쉘을 종료하고 명령 프롬프트로 돌아온다. 여담으로 파워 쉘에서도 cmd 명령을 실행해 명령 프롬프트로 쓸 수 있다. === cmd 실행법 === > powershell.exe -ExecutionPolicy ByPass -WindowStyle Normal를 앞에 붙여주면 된다. == 기타 == * 모든 명령어는 끝에 >nul 을 붙이면 창에 표기되지 않으며, @echo off 명령을 지정할 시 도스창의 프롬프트가 제거된다. [[분류:Microsoft Windows]]