start는 프로그램이나 명령을 별도의 새 명령 프롬프트 창에서 실행하는 명령이다.
이 장을 읽기 전에
선행 챕터: 이 장은 57장: schtasks에서 예약 작업을 다룬 뒤 이어진다. schtasks가 “미래의 특정 시점"에 실행하는 명령이었다면, start는 “지금 당장” 새 창(또는 비동기)으로 프로그램을 실행하는 명령이다. 01장(cmd)에서 start cmd /k "..." 예시로 이미 한 번 등장했던 명령이 이 장의 본격적인 주제다.
이 장의 깊이: 입문–중급.
사용법
| |
옵션
| 옵션 | 설명 |
|---|---|
"<제목>" | 새 명령 프롬프트 창의 제목 표시줄 문자열 |
/d <경로> | 시작 디렉터리 지정 |
/i | 현재 환경 대신 cmd.exe의 시작 시점 환경을 새 창에 전달 |
/min | /max | 최소화·최대화 상태로 시작 |
/wait | 시작한 애플리케이션을 실행하고 종료될 때까지 대기 |
/b | 새 창을 열지 않고 실행(CTRL+C 처리는 애플리케이션이 자체 구현하지 않는 한 무시됨. 중단하려면 CTRL+BREAK) |
예시
| |
주의사항·함정
첫 따옴표 문자열은 항상 창 제목으로 해석된다: start의 문법에서 <"title">은 첫 번째 매개변수 자리에 고정되어 있다. 그래서 공백이 포함된 프로그램 경로를 따옴표로 감싸 첫 인자로 주면, start는 그것을 실행할 프로그램이 아니라 창 제목으로 오인한다. 이 문제를 피하려면 위 예시처럼 빈 제목 ""을 항상 맨 앞에 명시적으로 넣는 습관이 필요하다 — start "" /wait myprogram.exe가 그 관용구다. 반대로 URL을 열 때는 이 성질을 역이용해, 창 제목에 사람이 알아볼 설명(“Bing”)을 넣고 그다음 인자로 실제 URL을 준다.
비실행 파일은 파일 연결로 열린다: 실행 파일이 아니라 등록된 파일 형식(.txt, .pdf, URL 등)의 이름을 그대로 넘기면, start는 그 형식에 연결된 프로그램으로 연다. URL은 자동으로 감지되어 기본 브라우저에서 열린다.
확장자를 생략하면 PATHEXT 순서로 찾는다: 첫 토큰이 명령도 아니고 확장자가 있는 기존 파일 경로도 아니면, PATHEXT 환경 변수에 나열된 순서(.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC가 기본값)로 확장자를 붙여가며 찾는다. 07장(path)에서 다룬 .exe → .com → .bat → .cmd 순서와 원리는 비슷하지만, start는 PATHEXT라는 별도의 환경 변수를 기준으로 삼는다는 차이가 있다.
32비트 GUI 애플리케이션은 cmd가 종료를 기다리지 않는다: 배치 스크립트가 아니라 대화형 프롬프트에서 32비트 GUI 프로그램을 실행하면, cmd는 그 프로그램이 끝날 때까지 기다리지 않고 곧바로 다음 프롬프트를 표시한다. 배치 스크립트 안에서 실행하면 이 동작이 달라질 수 있으므로, 순서를 보장해야 한다면 /wait를 명시적으로 지정해야 한다.
“CMD"로 시작하는 명령은 COMSPEC 값으로 치환된다: 사용자가 현재 디렉터리에 cmd라는 이름의 프로그램을 몰래 놓아두고 그것이 실행되게 하는 것을 막기 위한 보안 장치다. 문자열 CMD가 확장자·경로 없이 첫 토큰으로 오면, 항상 COMSPEC 환경 변수가 가리키는 진짜 cmd.exe로 대체된다.
PowerShell에서는 Start-Process가 대응 명령이다: Start-Process -FilePath <경로> -ArgumentList <인수>처럼 실행 파일 경로와 인수가 애초에 분리된 매개변수로 주어지기 때문에, start처럼 “따옴표로 감싼 첫 문자열이 제목인지 경로인지” 헷갈릴 여지가 구조적으로 없다. 다만 Start-Process는 새 창의 제목 표시줄 문자열을 직접 지정하는 매개변수를 기본으로 제공하지 않으므로, start의 "<제목>" 인자와 똑같은 기능을 원한다면 별도 방법을 찾아야 한다.
흔한 오개념
“start에 따옴표로 감싼 첫 문자열은 항상 실행할 프로그램 경로다”는 오해가 있다. 실제로는 정반대다 — start 문법에서 첫 번째 자리는 항상 창 제목으로 고정되어 있어서, 공백이 든 프로그램 경로를 따옴표로 감싸 그대로 첫 인자로 주면 start는 그 경로 문자열 전체를 제목으로 취급하고 정작 실행할 프로그램은 찾지 못한다. 그래서 start "" /wait "C:\Program Files\App\app.exe"처럼 빈 제목 ""을 항상 앞에 명시적으로 넣는 것이 관용구가 됐다.
다음 장에서는
다음은 59장 — 로컬 또는 원격 컴퓨터를 종료·재시작하는 shutdown 명령을 다룬다.
평가 기준
- start로 프로그램·문서·URL을 새 창 또는 비동기로 실행할 수 있다.
- 첫 따옴표 문자열이 항상 창 제목으로 해석된다는 함정과, 빈 제목
""관용구가 필요한 이유를 설명할 수 있다. - start가 확장자를 생략한 명령을 PATHEXT 순서로 찾는다는 것을 안다.
- 32비트 GUI 애플리케이션 실행 시
/wait가 왜 필요할 수 있는지 설명할 수 있다.
![Featured image of post [CMD] 58. start - 새 창에서 프로그램 실행](/post/cmd/start-command-run-program-new-window-windows-cmd/wordcloud_hu_387a099f378cbf16.webp)
![[CMD] 56. sc - Windows 서비스 조회와 구성](/post/cmd/sc-command-manage-windows-services-cmd/wordcloud_hu_58a312f8ee4fc53a.webp)
![[CMD] 57. schtasks - 예약 작업 생성과 관리](/post/cmd/schtasks-command-scheduled-tasks-windows-cmd/wordcloud_hu_81aec3fe438b0635.webp)
![[CMD] 58. start - 새 창에서 프로그램 실행](/post/cmd/start-command-run-program-new-window-windows-cmd/wordcloud_hu_293cdb6cf51a1dfc.webp)
![[CMD] 59. shutdown - 시스템 종료·재시작·로그오프](/post/cmd/shutdown-command-restart-shutdown-windows-cmd/wordcloud_hu_a22283eef4eb4918.webp)
![[CMD] 60. icacls - 파일·디렉터리 ACL 관리](/post/cmd/icacls-command-file-directory-acl-windows-cmd/wordcloud_hu_88d68b7b771f074f.webp)
![[CMD] 00. 과정 개요와 커리큘럼](/post/cmd/getting-started-cmd/wordcloud_hu_2cc899f0011ec68.webp)
![[CMD] 03. cls - 화면 지우기](/post/cmd/cls-command-clear-screen-windows-cmd/wordcloud_hu_7ea358caedbed43d.webp)
![[CMD] 37. pause - 배치 실행 일시 정지](/post/cmd/pause-command-suspend-batch-windows-cmd/wordcloud_hu_c9e1ff4cc8c91309.webp)
![[CMD] 55. taskkill - 프로세스 종료](/post/cmd/taskkill-command-terminate-process-windows-cmd/wordcloud_hu_ddd283af47ca6ca.webp)
![[CMD] 02. help - 명령어 도움말 조회](/post/cmd/help-command-list-command-help-windows-cmd/wordcloud_hu_2f2562c124a5a3f7.webp)