1. 개요
명령 프롬프트는 윈도우즈의 명령 입력 대기를 상황을 뜻한다.명령어 해당 운영체제에서 기본적으로 파일 처리를 위해서 지원 하는 기초 명령어를 이야기 한다.
명령 프롬프트 종류
1. 내부명령어 (일반파일처리, 배치파일, 정보출력)
2. 외부명령어 (COM,EXE 파일)
3. 사용자명령어
4. 네트워크명령어
5. 숨겨진명령어
6. 정품 OOD 명령어
7. 마소 온라인 확장팩 명령어
8. 윈도우즈 콘솔명령어
9. 쿼리 타입 명령어
10. 터미널
내부 명령어는 마이크로 소프트웨어사의 기준 인터프리터 (해석기,COMSPEC,COMMAND.COM,NTVDM.EXE)
로 내부 명령어를 가지고 있다.
일반명령어
copy,cd,md,rd,dir.del
정보출력
label,ver,echo,cls,type
정보출력
label,ver,echo,cls,type
배치명령어
@
shift
setlocal
endlocal
pushd
popd
If
FOR
SET
EXIT
GOTO
CALL
:label
START
SWITCH-DOS ONLY
외부배치명령어 - CMD.EXE & COMSPEC
@
shift
setlocal
endlocal
pushd
popd
If
FOR
SET
EXIT
GOTO
CALL
:label
START
SWITCH-DOS ONLY
외부배치명령어 - CMD.EXE & COMSPEC
외부 명령어는 COMMAND.COM 이나 CMD.EXE이 외부 라이센스 구입 으로 구입한 파일
혹은 다른 DOS에서 차용해서 컴파일링 하는 파일 또는 MS에서 자체 개별적으로 개발한 파일
을 외부 파일로 가지고 있다.
외부 라이센스 - SPEEDISK,DEFRAG, DoubleSpace (스태커 소송전에서 패해서 6.21에서는 제거됨),MSAV (노턴안티바이러스)
내부 자체 개발 - MEMMKER,FDISK,FORMAT,XCOPY,DISKCOPY,MODE...
사용자명령어
본인이 직접 개발 하거나 필요에 의해 외부에서 설치하여 사용 하는 CLI타입명령어
WIN - FFMPEG,MPLYEAR,GREP,WGET
dos - MDIR,NC,PCXVIEW,MODPLAYER,CDPLAYER
네트워크 명령어
윈도우즈 NT OR 윈도우즈 9X 스리즈에서 지원 하는 네트워크 전용 명령어
IPCONFIG, PING, WINIPCFG
숨겨진 명령어
HELP 에는 없고 WINDOWS OR SYSTEM32 에 있는 CLI 타입 명령어
윈도우 xp 부터 점차 늘어 나더니 7에서 엄청 나게 많아짐 대부분 네트워크 명령어들
pathping ...
정품 ood 명령어
정품 설치 ood 에서 부팅 유틸로 존재하는 명령어
윈도우 설치 이후 설치된 os 에는 복사 하지 않고 존재 하지 않음..
윈도우 서버군에 많이 존재 함
마소 온라인 확장팩 명령어
마소 msdn이나 테크니컬 홈사이트에서 지원 하는 ms 공식 명령어
https://learn.microsoft.com/ko-kr/sysinternals/downloads/process-utilities
윈도우즈에서 실행 콘솔 명령어에는
run32dll.exe
msjava.exe
*.msc
*.cpl
*.js
기타, 자동실행 지원 인터프리터 파일
set pathext
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
windows runtime visual compiler
쿼리 타입 명령어
wmic,reg
터미널명령어
ftp, telnet
2. TSKILL \[\*\]
#!syntax powershell tskill "<프로세스 이름>"
#!syntax powershell tskill "<프로세스 PID>"
TASKKILL과 비슷하지만 기능이 적다. 강제로 종료하는 기능도 없다.
프로세스 이름 끝에 .EXE를 붙이지 않는다.
Windows 10 이상에서의 일부 시스템에서는 이 명령어가 없다.
3. Taskkill \[\*\]
#!syntax powershell taskkill /f /im "<프로세스 이름>" /pid "<프로세스의 PID 번호>" /t /fi "<필터 값>"
옵션 | 설명 |
/f | 프로세스를 강제로 종료한다. |
/im | 종료할 프로세스의 이름을 지정한다. |
/pid | 종료할 프로세스의 PID(프로세스 식별자)를 지정한다. |
/t | 지정된 프로세스와 그 프로세스로부터 시작된 모든 자식 프로세스를 종료한다. |
/fi | 지정된 조건에 해당하는 프로세스를 종료한다. 이를 이용해 특정 서비스를 종료할 수 있다. |
예시: 현재 실행되고 있는 모든 메모장을 강제로 종료한다.
#!syntax powershell taskkill /f /im notepad.exe
이 명령어로 시스템 중요 프로세스를 강제로 종료시키면 Windows가 먹통이 되거나 블루스크린이 뜬다.[1]
이 명령어를 사용하여 explorer.exe을 강제 종료시키는 배치 파일을 만들면 Windows Defender가 바이러스로 인식한다.
3.1. 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"
4. shutdown \[\*\]
#!syntax powershell shutdown /s /t /c "<주석>" /f
옵션 | 설명 |
/a | 예약되어있는 종료의 예약을 취소한다. 다른 옵션들을 쓸 수 없다. |
/s | 컴퓨터를 종료한다. 재시동인 /r 옵션과 같이 쓸 수 없다. |
/r | 컴퓨터를 종료하고 다시 시작한다. 종료인 /s 옵션과 같이 쓸 수 없다. |
/t | 컴퓨터를 지정된 시간[2] 후 종료하도록 예약한다. |
/c | 다시 시작 또는 종료의 원인을 설명하는 주석을 단다. 최대 512자까지 쓸 수 있다. 꼭 "" 로 열고 닫아야 한다. Windows XP 기준 시스템 종료 타이머 창에 이 메시지가 나타난다. |
/f | 사용자에게 미리 경고하지 않고 실행 중인 모든 프로세스들을 강제로 닫는다. |
/i | 원격 컴퓨터 종료 도구를 실행한다. GUI 형식이며 다른 컴퓨터를 종료시킬 수도 있다. |
예시: 1시간 후 "외출" 이라는 이유로 종료된다.
#!syntax powershell shutdown /s /t 3600 /c "외출" /f
다만 일부 모델의 경우 한국어로 종료 이유를 입력할 경우 글자가 깨져서 나오는 경우가 있다.
5. rd(rmdir)
#!syntax powershell rd "<경로>" /s /q
#!syntax powershell rmdir "<경로>" /s /q
옵션 | 설명 |
/s | 지정된 폴더 자체와 그 안의 모든 폴더 및 파일을 지운다. 이 옵션을 설정하지 않으면 빈 폴더가 아닌 이상 삭제되지 않는다. |
/q | /s 옵션으로 폴더 트리를 지우는 데 문제가 없으면 다시 묻지 않는다. |
예시: C 드라이브의 모든 하위 디렉터리와 파일을 지운다. 시스템 중요 파일, 폴더들은 관리자 권한이 있다 하더라도 접근이 거부된다.
#!syntax powershell rd C:\ /s /q
6. del
#!syntax powershell del /p /f /s /q "<파일 이름>"
#!syntax powershell erase /p /f /s /q "<파일 이름>"
옵션 | 설명 |
/p | 각 파일을 삭제하기 전에 삭제를 확인하는 메시지를 표시한다. |
/f | 읽기 전용 파일을 삭제한다. |
/s | 지정된 파일을 모든 하위 디렉터리에서 삭제한다.[3] |
/q | 삭제할 것인지 묻지 않는다. |
예시: C 드라이브 내의 .avi 확장자를 가진 모든 파일을 삭제한다. 관리자 권한으로 실행하면 읽기 불가 시스템 폴더들도 모두 스캔한다.
#!syntax powershell del /s /q "C:\*.avi"
7. ren
#!syntax powershell ren "<파일 경로>\<파일 이름과 확장자>" "<바꿀 파일 이름과 확장자>"
확장자들을 한꺼번에 변경시킬 수 있으므로 시간을 절약할 수 있는 명령어. 이 명령어를 모르는 컴맹들은 직접 하나하나 확장자를 바꿔야 했다. 옵션이 없는 명령어이다.
예시: 명령을 실행한 폴더 내의 모든 파일의 확장자를 .aaa 로 바꾼다. 랜섬웨어가 막 등장했을 때, 확장자가 랜섬웨어에 등록되어 있지 않으면 암호화를 하지 않는 방식이었기 때문에 사용됐었다. 최근에 나온 랜섬웨어들은 파일 헤더를 읽어서 암호화 하기 때문에 전혀 먹히지 않는다.
#!syntax powershell ren *.* *.aaa
8. 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"
파일 내용 | |
1 | 123 |
2 | 456 |
3 | 789 |
merge | 123456789[4] |
예시: 현재 디렉토리의 모든 파일을 C: 드라이브 루트로 복사한다.
#!syntax powershell copy . C:\
예시: image.jpg 와 archive.zip을 compressed.jpg 파일 하나로 합친다. 이 경우 jpg 확장자일 때는 이미지로 표시되지만 이름 수정으로 zip 확장자로 변경할 시 압축 파일로 인식된다. 이미지 파일 안에 압축 파일을 숨기는 방법으로 이용된다.[5]
#!syntax powershell copy /b image.jpg + archive.zip compressed.jpg
9. xcopy \[\*\]\
xcopy "원본" "대상" [/a|/m] [/d:날짜] [/w] [/s] [/c] [/i] [/f] [/h] [/u] [/y|/-y]
파일과 디렉터리 트리를 복사한다.
옵션 | 설명 |
/a | 보관 특성을 가진 파일만 복사하며 보관 특성을 수정하지 않는다. |
/m | 보관 특성을 가진 원본 파일만 복사하며 보관 특성을 지운다. |
/d:m-d-y | 지정된 날짜 이후에 바뀐 파일을 복사한다. 날짜 없이 /d 만 지정하면 대상 파일보다 새로운 원본 파일만 복사한다. |
/w | 각 파일을 복사하기 전에 아무 키나 누르게 한다. |
/s | 비어 있지 않은 폴더와 하위 폴더들을 모조리 복사한다. [6] |
/c | 오류가 생겨도 복사를 진행한다. |
/i | 대상을 찾을 수 없고 두 파일 이상을 복사하면 대상을 디렉터리로 지정한다. |
/f | 복사하는 동안 원본과 대상 파일의 전체 경로를 표시한다. |
/h | 숨김 파일과 시스템 파일도 복사한다. |
/u | 대상에 이미 있는 파일을 업데이트한다. |
/y | 이미 있는 대상 파일을 덮어쓸지 묻지 않는다. |
/-y | 이미 있는 대상 파일을 덮어쓸지 묻지 않는다. |
예
xcopy "C:\\File\\" "D:\\Files\\" /s /c /h /y
C드라이브 내의 File 폴더와 그 폴더 내의 모든 하위 디렉터리를 D:\Files 로 복사한다. 복사 도중 오류가 생겨도 계속 진행한다. 숨김 파일과 시스템 파일도 모두 복사한다. D:\Files\ 에 이미 같은 이름의 파일/폴더가 있어도 덮어쓴다.xcopy "C:\\File\\" "D:\\Files\\" /s /c /h /y
10. dir
dir ["경로"] [/a[\[\:\]특성]\] [/p] [/q] [/s] [/w]
디렉터리에 있는 파일과 하위 디렉터리 목록을 보여준다.
옵션 | 설명 | ||
/a:특성 | 지정된 특성을 가진 파일만 보여준다. 특성을 지정하지 않았을 경우에는 모든 파일을 보여준다. {{{#!folding 특성 [펼치기/접기] | 특성 | 설명 |
D | 디렉터리 | ||
H | 숨겨진 파일 | ||
S | 시스템 파일 | ||
R | 읽기 전용 파일 | ||
A | 보관된 파일 | ||
O | 오프라인 파일[7] |
/p | 정보가 화면에 꽉 차면 잠시 정지한다. |
/q | 파일의 소유자를 보여준다. |
/s | 지정한 디렉터리와 하위 디렉터리를 포함하여 보여준다. |
/w | 파일 이름만 보여준다. 넓게 나온다. |
예
dir "C:\\Users\\user" /a /s /p
C 드라이브의 User 사용자 폴더 내와 모든 하위 디렉터리의 파일들을 보여준다.[8] 화면이 가득 차면 잠시 멈춘다.dir "C:\\Users\\user" /a /s /p
예
dir /a:h
해당 명령어를 실행한 폴더 내의 (h) 숨김 파일, 폴더들만 리스트로 dir /a:h
11. TREE
TREE [경로] [/F] [/A]
옵션 | 설명 |
/F | 파일을 포함하여 출력한다. |
/A | 그래픽 문자대신 ASCII 코드로 된 문자로 표시해준다. |
예
tree C:\\Users\\user /f
C 드라이브의 User 사용자 폴더 구조를 파일을 포함하여 보여준다.tree C:\\Users\\user /f
tree c:// 모든 경로를 빠르게 보여준다
12. HELP
HELP [명령어]
명령어 | 해당 명령어에 대한 도움말을 보여준다. |
참고로 MS-DOS 6.2는 설명서처럼 친절하게 설명하고 주의사항과 참고사항까지 자세하게 적혀있는데, Windows NT는 그냥 HELP이라고 쓰면
13. PROMPT
PROMPT [프롬프트]
스위치 | 설명 |
프롬프트 | 터미널의 프롬프트를 지정한다. 일부 특수문자는 따로 처리를 해야 작동한다. 지정하지 않으면 기본값이 적용된다. |
C:\>
를 변경할 수 있다. MS-DOS 중간 버전부터 Windows 10까지 모두 있는 명령어이다.PROMPT $n$g
MS-DOS 4.x풍으로 되돌아간 느낌이 나게 해 준다. C:\>
대신 C>
이 나온다.PROMPT 명령어:
이렇게 지정하면 다음과 같이 된다.C:\\>prompt 명령어:
명령어: copy a.txt c:\\
1개 파일이 복사되었습니다.
명령어:
명령어: copy a.txt c:\\
1개 파일이 복사되었습니다.
명령어:
14. SET
SET [/a] [/p] 변수명=내용
옵션 | 설명 |
/a | 변수를 정의하는 데 표현식을 사용한다. /p 스위치와 함께 쓸 수 없다. |
/p | 주로 입력을 받을 때 사용되는 스위치이다. '<'와 함께 사용하면 해당 파일의 첫 줄을 가져와 변수로 설정한다. 도스에는 없다. |
예:
set /p "변수=>"
화면에 ">"를 띄운 후 입력받는다. 입력한 내용은 "변수" 변수로 선언된다.set /p "변수=>"
set /p 파일=<"C:\Windows\Temp\1.txt"
C:\Windows\Temp\1.txt 의 첫 줄을 "파일" 변수로 선언한다.- 자세히 보기 [펼치기/접기]
- >1.txt123456
789012
set /p 파일=<"1.txt"
echo %파일%
출력값: 123456
set /a 결과=280*2
280*2의 결과를 "결과" 변수로 선언한다.set /a number=%random% %% 9 + 1
1~9 사이의 난수를 "number" 변수로 선언한다.14.1. replace \[\*\]\
사용법:
set 변수=writed!
"변수"의 값은 writed!이다.
set 변수=%변수:write=sette%
밑 줄에서 "변수" 내의 값 중 write를 sette로 바꾸라는 명령을 한다.
echo %변수%
출력 값은 setted이다.
set 변수=writed!
"변수"의 값은 writed!이다.
set 변수=%변수:write=sette%
밑 줄에서 "변수" 내의 값 중 write를 sette로 바꾸라는 명령을 한다.
echo %변수%
출력 값은 setted이다.
15. 그 외
명령 프롬프트의 기본 기능 외의 명령어들을 서술한다.15.1. MS-DOS 하위 호환용 명령어
명령 프롬프트에서도 쓸 수 있으나 이 명령어들은 모두 16비트 구조이기 때문에 32비트 윈도우에만 있다.15.1.1. MEM
MEM
메모리 사용량을 보여준다.
여담으로 Windows 7에서는 인터페이스가 MS-DOS 5.0(최신 버전은 6.2) 인터페이스이다(...).
16비트 프로그램이기 때문에 NTVDM에서 949 코드페이지(완성형 한글)를 지원하지 않는 Windows Vista 이상의 운영체제는 영어로 나온다.
15.2. exit
명령 프롬프트를 종료한다.16. powershell \[\*\]\
명령 프롬프트 창에서 윈도우 파워 쉘을 호출한다. exit 명령어로 파워 쉘을 종료하고 명령 프롬프트로 돌아온다. 여담으로 파워 쉘에서도 cmd 명령을 실행해 명령 프롬프트로 쓸 수 있다.16.1. cmd 실행법
powershell.exe -ExecutionPolicy ByPass -WindowStyle Normal를 앞에 붙여주면 된다.
17. 기타
- 모든 명령어는 끝에 >nul 을 붙이면 창에 표기되지 않으며, echo off 명령을 지정할 시 도스창의 프롬프트가 제거된다.
- 배치 화일에서 명령어 앞에 @를 붙이면 해당 명령어만 프롬프트(명령어 반향)가 제거된다. 대부분의 배치 화일 첫머리에 @echo off가 있는 이유도 모든 명령어에 대해 프롬프트를 띄우지 않으면서 echo off 명령어가 실행되는 것도 표시되지 않게 하기 위함이다.
- 탐색기에서 비어 있는(0바이트) 배치 화일을 실행하면 올바르지 않은 Win32 응용 프로그램이라고 뜬다.
[1] 예시:
#!syntax powershell taskkill /im svchost.exe /t /f
해당 명령어를 사용하면 블루스크린이 뜬다. 상술했듯 svchost.exe가 중요 프로세스이기 때문이다.[2] 초 단위. 최대값은 315,360,000초(10년)이다.[3] 예로 하나를 든다면, del "C:\file.txt" /s /q 라는 명령을 주면 C 드라이브 내의 file.txt라는 이름을 가진 파일들을 몽땅 삭제한다. C드라이브를 전체적으로 스캔하니 시간도 오래 걸린다.[4] 빈칸 없이 바로 붙인다.[5] Windows 7 32비트 기준 이미지는 정상 출력되나 압축 파일로는 인식하지 않는다. 이 경우 별도 압축 해제 프로그램이 필요하다.[6] 이 스위치가 없으면 빈 폴더만 복사한다. 모두 복사하려면 이 스위치를 반드시 주어야 한다.[7] 숫자 0이 아닌 대문자 O이다.[8] 숨김 파일,시스템 파일,보관 파일 등 모두 포함