Command Prompt
명령 프롬프트(실행 파일이름: cmd.exe)는 OS/2, 윈도우 CE 그리고 윈도우 NT (윈도우 2000/XP/2003/비스타 이상) 기반 시스템의 명령 줄 해석기이다. MS-DOS와 윈도우 9x 시스템의 COMMAND.COM 또는 유닉스 시스템에서 쓰이던 셸의 아날로그 형태이다.
Categories
Example
- Boost:WindowsBuildScript: Windows에서 Boost를 빌드하는 방법.
Default
명령 프롬프트가 실행되자 마자 자동적으로 어떤 명령을 실행하고 싶은 경우 아래의 레지스트리를 수정하면 된다 (없을 경우 '문자열 값'을 추가하면 된다).
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
-
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
위 내용은 아래의 명령어를 사용하여 확인할 수 있다.
명령 프롬프트의 상세한 명령어는 아래의 명령어를 사용하면 확인할 수 있다.
Terms
- 와일드카드 문자 (Wildcard character)
- 와일드카드 문자(wildcard character)는 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호를 가리킨다. 별표(
*
) 물음표(?
) 등이 사용된다.
Syntax
문법에 대하여 설명한다.
FOR /F Options
-
tokens=
- FOR 구문은 각 행별로 분석하는데 이때 토큰은 각 행의 몇번째 문자열을 전달해줄지 지정합니다. 문자열의 기본 구분단위는 공백입니다.
-
delims=
- 토큰은 기본적으로 공백으로 구분하는데 delims 뒤에 구분 문자를 지정하면 그걸로 대체됩니다.
-
skip=
- 위에서부터 몇줄까지 무시할지 결정해줍니다. 필요한 토큰이 세번째 줄에 있다면 처음 두줄은 무시해줘도 되겠지요. 이 경우 skip=2 라고 입력하면 됩니다.
-
usebackq
- 이 옵션은 공백을 포함한 파일 경로 양쪽에 큰 따옴표를 붙여줄 때 사용합니다.
Example
-
chcp 65001
- 콘솔창에 UTF-8으로 출력한다. 참고로 change code page의 약자.
-
for %%i in (D:\temp\*.png) do move /y %%i %%~di%%~pi%%~ni@2x%%~xi
- 파일 이름을 일괄적으로 변경.
-
for /r %%i in (*.zip) do md5sum %%~ni%%~xi > %%~ni.md5
- 모든 zip파일의 md5 해시값을 저장한다.
공백이 추가된 환경변수
아래와 같은 방식으로 사용할 수 있다.
Split command
긴 명령어를 나누고 싶을 경우 아래와 같이 사용하면 된다.
사칙연산
정수형 수치연산은 SET
명령어에 /A
플래그를 추가하면 된다.
Get STDOUT into a variable
- Stackoverflow: Get STDOUT into a variable
- Stackoverflow: Windows batch assign output of a program to a variable
stdout결과를 변수에 넣는 방법은 아래와 같다.
for /f "tokens=*" %%a in ('[sendmail command line]') do (
set VAR=%%a
)
:: OR
application arg0 arg1 > temp.txt
set /p VAR=<temp.txt
:: OR
for /f %%i in ('application arg0 arg1') do set VAR=%%i
Copy Clipboard
DATE and TIME
현재날짜 및 현재시간을 파일명에 추가하고싶을 경우 아래와 같이 하면 된다.
set RN_DATE=%date:~0,4%%date:~5,2%%date:~8,2%
set /A RN_TIME_HOUR=%time:~0,2%
if %RN_TIME_HOUR%==0 set RN_TIME_HOUR=00
set RN_TIME=%RN_TIME_HOUR%%time:~3,2%%time:~6,2%%time:~9,2%
set RN_NOW=%RN_DATE%-%RN_TIME%
echo %RN_NOW%
Change CMD CodePage
cmd 기본 코드 페이지를 UTF-8으로 변경 방법: UTF-8 CodePage: 65001
Command Prompt:
PowerShell:
Cygwin:
Tips
-
%ComSpec%
환경변수는cmd.exe
의 전체 파일 경로를 나타낸다. - 빈라인 출력은
ECHO.
을 사용하면 된다. - 커맨드 앞에 @를 사용할 경우 커맨드에 대한 ECHO를 하지 않는다.
- 참고로 sh 또는 [[bash] 에서
echo off
하는 방법은stty -echo
를 사용하면 된다. (echo on
은stty echo
를 사용하면 된다)
- 참고로 sh 또는 [[bash] 에서
doskey ls=dir
을 사용하면 비슷한 효과를 낼 수 있다.- 레지스트리 경로
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun
에 문자열(REG_SZ)로doskey ls=dir
을 입력하면 된다.
%*
를 사용하면 되고, %1
, %2
, ... 와 같은 방법으로 각 아규먼트에 접근할 수 있다. -f
)을 대신 사용할 수 있는 명령은, PowerShell에서 cat filename.txt -Wait -Tail 1000
와 같은 방식으로 사용하면 된다. Sample Download
Windows command prompt (CMD)의 참조 및 재사용이 가능한 스크립트를 나열한다.
- Cmd-geosoft-korail-ftp-update.zip
- FTP의 최신 업데이트 데이터를 자동으로 검색하여 다운로드한다.
- Cmd_file_and_rename.zip
- 파일명에
&
가 포함될 경우AND
로 변환한다.
- Cmd-blackhole-bat-sample.zip
- Blackhole 프로젝트에서 사용한 샘플 배치파일.
See also
- DOSBox
- COMMAND.COM
- Shell
- Bash
- PowerShell
Favorite site
- Wikipedia (en) cmd.exe
- Microsoft Windows XP CMD
- MSDN: Command Prompt: frequently asked questions
- DOS - String Manipulation
- 윈도우 BATCH 파일 작성 팁
- [추천] Rob van der Woude's Scripting Pages 2
Sample site
- 배치화일로 파일 내에 문자쓰기
- 배치파일로 폴더 내의 여러 파일을 각각 압축하기
- 배치화일 수동 초이스 만들기
- html 배치화일 특수문자 해결
- 배치화일 명령어
- 네트워크 드라이브 자동 연결하기
- IP 자동 변경 스크립트
- 반복적인 ip 변경은 Bat 파일을 이용하여 간단하게
- 윈도우 콘솔 명령어들
- 배치파일로 폴더 내의 여러 파일을 각각 압축하기
- 폴더 분기
- 날짜 및 시간 얻어오기 배치파일
- 배치화일 오늘날짜 폴더 생성
- 배치화일 bat 화일 자동처리 1