Skip to content

Command Prompt

명령 프롬프트(실행 파일이름: cmd.exe)는 OS/2, 윈도우 CE 그리고 윈도우 NT (윈도우 2000/XP/2003/비스타 이상) 기반 시스템의 명령 줄 해석기이다. MS-DOS와 윈도우 9x 시스템의 COMMAND.COM 또는 유닉스 시스템에서 쓰이던 셸의 아날로그 형태이다.

Categories

Example

Default

명령 프롬프트가 실행되자 마자 자동적으로 어떤 명령을 실행하고 싶은 경우 아래의 레지스트리를 수정하면 된다 (없을 경우 '문자열 값'을 추가하면 된다).

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
  • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

위 내용은 아래의 명령어를 사용하여 확인할 수 있다.

help cmd

명령 프롬프트의 상세한 명령어는 아래의 명령어를 사용하면 확인할 수 있다.

help

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 해시값을 저장한다.

공백이 추가된 환경변수

아래와 같은 방식으로 사용할 수 있다.

set "VAR_NAME=<String With Spaces>"

Split command

긴 명령어를 나누고 싶을 경우 아래와 같이 사용하면 된다.

copy.exe file1.txt ^
    file2.txt

사칙연산

정수형 수치연산은 SET명령어에 /A플래그를 추가하면 된다.

set a=123
set b=456
set /a c=a+b
echo %c%

Get STDOUT into 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

dir | clip

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

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9

Command Prompt:

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 0xfde9

PowerShell:

sp -t d HKCU:\Console CodePage 0xfde9

Cygwin:

regtool set /user/Console/CodePage 0xfde9

Tips

  • %ComSpec%환경변수는 cmd.exe의 전체 파일 경로를 나타낸다.
  • 빈라인 출력은 ECHO.을 사용하면 된다.
  • 커맨드 앞에 @를 사용할 경우 커맨드에 대한 ECHO를 하지 않는다.
    • 참고로 sh 또는 [[bash] 에서 echo off하는 방법은 stty -echo를 사용하면 된다. (echo onstty echo를 사용하면 된다)
  • ls명령어를 사용하고 싶을 경우 doskey ls=dir을 사용하면 비슷한 효과를 낼 수 있다.
    • 레지스트리 경로 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun에 문자열(REG_SZ)로 doskey ls=dir을 입력하면 된다.
  • 전달된 전체 아규먼트는 %*를 사용하면 되고, %1, %2, ... 와 같은 방법으로 각 아규먼트에 접근할 수 있다.
  • Bash의 tail명령(-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

Favorite site

Sample site

References


  1. Batchfile_for-blog_daum_net_idrlee_16101024.zip 

  2. Www_robvanderwoude_com.zip 

  3. Www_robvanderwoude_com.zip