명령 프롬프트가 열릴 때 자동으로 명령 실행


21

Windows에서 명령 프롬프트를 열 때 특히 일부 명령 별칭을 설정하기 위해 일부 콘솔 명령을 자동으로 실행하는 방법을 찾고 있습니다.

예를 들어 명령 프롬프트가 열리면 다음 ls대신 사용할 수 있도록 다음과 같은 명령이 자동으로 실행되기를 원합니다 dir.

doskey ls=dir

이것을 어떻게 할 수 있습니까?



3
Windows XP에는 DOS가 없습니다.
user1686

@KContreau, interessant. 따라서 "배치 / 분리"명령 후에 도우 치 대체물을 저장하지 않고 "cmd / k"또는 "cmd / c"만 사용하여 배치를 변경하는 이유가 있습니다.
kokbira

"설명"판 후에 질문 제목을 변경해야합니까?
kokbira 2016 년

1
@KCotreau : 기술적으로 Win32 콘솔 하위 시스템의 일부이며 특정 시스템은 아닙니다 cmd.exe.
user1686

답변:


9

XP Pro (XP 홈에는 gpedit.msc가 포함되어 있지 않음)가있는 경우 로그인 할 때가 아니라 부팅시로드하려는 경우 다음과 같이하십시오.

시작> 실행> gpedit.msc

Enter 키를 누르십시오. 그런 다음 명령 행에서 gpupdate / force를 실행하십시오.

이동

컴퓨터 구성> Windows 설정> 스크립트> 시작

스크립트에 위치를 추가하십시오.

아래에서 사용자 로그온에 대해이 작업을 수행 할 수도 있습니다.

사용자 구성> Windows 설정> 스크립트> 시작

XP Home이있는 경우 스크립트를 다음 중 하나에 복사 할 수 있습니다.

C : \ Windows \ System32 \ GroupPolicy \ Machine \ Scripts \ 시작

부팅시로드하기 위해 또는

C : \ Windows \ System32 \ GroupPolicy \ 사용자 \ 스크립트 \ 로그온

로그온시 사용자에게로드합니다. GroupPolicy 폴더가 숨겨져 있습니다.


1
시작 폴더에 넣는 것 보다이 방법을 선호합니다. 더 영구적으로 만듭니다.
Joe Taylor

1
@ 조 테일러 감사합니다. 솔직히 말하면 Outlook 시작과 같은 경우에만 Startup 폴더를 사용합니다. 이것은 시스템 관리 관점에서보다 표준적인 방법입니다.
KCotreau 2016 년

@ KContreau, 귀하의 솔루션은 매우 유용하지만 그러한 경우에는 유용하지 않습니다. 테스트했지만
도스 키

@kokbira 원래 질문은 단순히 "XP에서 시작시 스크립트를 실행하는 방법은 무엇입니까?"였습니다. 그는 "예를 들어 doskey ls = dir"부분을 편집하고 추가했습니다.
KCotreau 2016 년

1
@ KContreau, 맞습니다. 문제는이 질문의 제목이 정확하지 않다는 것입니다. "설명"에서 그는 "도스 프롬프트를 시작할 때 주로 일부 별칭을 설정 하기 위해 일부 DOS 명령을 실행하고 싶다"고 말했다 . Windows가 시작될 때 일부 명령을 수행하려면 솔루션이 정상이지만 별칭을 실행하는 것은 아닙니다.
kokbira 2016 년

47

명령 별명은 구성한 콘솔 창에 따라 다르므로 시작 스크립트가 작동하지 않습니다. 이 방법으로 할 수 있습니다 :

  1. doskey 명령 으로 배치 파일 ( .cmd)을 작성하여 애플리케이션 데이터 어딘가에 넣으십시오.

  2. cmd 를 열 때마다 자동으로 시작되도록 구성하십시오 . 설정은 레지스트리에 있습니다.

    • 키: HKCU\SOFTWARE\Microsoft\Command Processor
    • 값: AutoRun
    • 유형 : REG_EXPAND_SZ
    • 데이터: "%AppData%\aliases.cmd"

1
이것은 명령 프롬프트가 항상 컴파일러 경로를로드하기를 원했던 Win2K 가상 OS에 대한 훌륭한 솔루션이었습니다. 차이점은 REG_EXPAND_SZ 대신 REG_SZ를 사용하는 것입니다.
James

이것은 좋은 해결책입니다. 우연히, 초기 출력을 억제 할 수있는 방법이 있습니까?
nburr

1
@Nickolas : 항상 명령을 NUL로 리디렉션 하시겠습니까?
user1686

이것은 "시스템이 지정된 경로를 찾을 수 없습니다"와 같은 오류를 발생시키는 Windows 리소스 컴파일러 (rc.exe)를 방해 할 수 있습니다. Visual Studio Shell 격리 된 프로젝트가 컴파일되지 않음을 참조하십시오 .
5910

파일 존재 여부를 먼저 확인하여이 문제를 해결했습니다.if exist "%AppData%\aliases.cmd" "%AppData%\aliases.cmd"
User5910

4

다른 명령 해석기는 다른 방법으로 명령 별명을 처리합니다.

Microsoft의 CMD는 Win32 콘솔 하위 시스템을 사용하여 명령 별칭 지정 메커니즘을 제공합니다. 이 doskey명령은 실제로 프로세스 콘솔과 상호 작용하며 별칭을 보유하는 콘솔 자체입니다. 따라서 별명은 콘솔 및 임시입니다.

JP Software의 TCC / LE 는 별칭 자체를 처리합니다. 이 alias명령을 사용하면 "local"또는 "global"인 별칭을보고 조작 할 수 있습니다. 별명은 여전히 ​​일시적이지만 하나의 명령 해석기 프로세스 전용이거나 모든 명령 해석기 프로세스간에 공유됩니다 (모든 콘솔에서).

같은 쉘 Korn 쉘 에서 SFUA 유틸리티 툴킷 - 도구에서 실행되는 UNIX 기반 응용 프로그램 용 하위 시스템 윈도우 7 얼티밋 에디션 및 Windows Server Windows XP의 2008 R2 (함께 상자에 바로 거기 온다, 하나는 수 다운로드 및 설치 UNIX 버전 3.5 서비스 ). — cygwin 의 Bourne Again 쉘은 유사하게 별명 자체를 처리합니다. 별명은 일시적이며 명령 별 인터프리터 프로세스입니다.

기본 초기 별칭 세트 자동로드는 명령 인터프리터에 따라 다릅니다.

모든 경우에 일종의 스크립트에 별명을 설정하는 명령을 배치합니다.

grawityMicrosoft CMD가 시작될 때 명령을 실행하게하는 두 개의 레지스트리 키 중 하나를 이미 제공 했습니다 . 불행하게도 별명 자체가 콘솔별로 저장되어 있어도 명령 별 인터프리터 프로세스 입니다. 초기 명령 해석기에서 보조 명령 해석기를 시작하면 기본 별명에 대한 수동 변경 사항이 재설정됩니다. 최소한 콘솔 당 한 번만 초기화를 수행하는 대안은 /K옵션과 호출하는 명령 스크립트의 이름 을 추가하는 것입니다doskey 은 명령 인터프리터를 시작하는 바로 가기에서 명령 꼬리 입니다.

JP Software의 TCC / LE 는 시작시 스크립트자동으로 실행합니다TCSTART . 다시, 이것은 명령 별 인터프리터 프로세스입니다. 그러나 TCC의 "로컬"별명 명령 인터프리터 프로세스에 따라 별명을 사용하는 경우 별명을 초기화하기에 적합한 곳입니다. 전역 별칭의 경우 Startup폴더에서 파일에서 별칭을로드 하는 바로 가기 ( alias /r)를 만든 다음 해당 바로 가기가 실행 된 후에도 계속되도록 명령 을 실행 하면shralias 됩니다.

Bourne Again 및 Korn 쉘의 경우 다른 플랫폼에서 이러한 쉘을 사용하는 것처럼 간단하게 수행하십시오. Bourne Again 쉘 alias$HOME/.profile$HOME/.bashrc스크립트 에서 명령을 사용하십시오 . Korn 쉘 alias$HOME/.profile, ENV 및 $HOME/.kshrc스크립트에 있는 명령을 사용하십시오 .


2

Gravity의 답변은 저에게 큰 도움이되었습니다.

문서 폴더에 shell-aliases.cmd 스크립트를 만들었습니다 (나중에 나중에 찾을 수 있음).

그런 다음 레지스트리 키에 'AutoRun'확장 가능 문자열 값을 작성하십시오.

'HKEY_CURRENT_USER \ Software \ Microsoft \ 명령 프로세서'

별명 파일의 전체 경로로 값을 설정하십시오 (내는 'C : \ Users \ Lee \ Documents \ shell-aliases.cmd'에 있음).

명령 프롬프트를 다시로드하면 내 도스 키 별칭이 작동했습니다. 또한 별칭 파일은 쉽게 액세스 할 수 있으며 추가 할 내용이 있으면 편집 할 수 있습니다.


0

여러 위치가 있지만 시작 메뉴> 시작 폴더가 가장 쉽습니다.

'msconfig'를 실행하고 어떤 프로그램이 시작되는지, 이유를 확인하십시오. 이러한 목록 중 하나에 프로그램을 추가하면됩니다 (예 : 레지스트리).


0

여기서 문제는 시작할 때 수행하는 경우 이러한 대체는 열린 CMD 프롬프트에서만 사용 가능합니다. 닫히면 이러한 대체 항목이 모두 손실되고 열려있는 모든 명령 프롬프트에 대해 다시 수행해야합니다.

따라서 몇 가지 다른 방법으로 결합 할 수 있습니다.

I. 배치 및 바로 가기를 만듭니다.

  1. 이 매크로를 사용하여 배치를 생성하고 알려진 위치 (예 : c : \ apps \ mycmd.bat)에 저장하십시오.
  2. 바탕 화면 (또는 원하는 위치)에 "cmd / k"를 경로 앞에 두는 바로 가기를 만듭니다 (예 : "cmd /kc:\apps\mycmd.bat").
  3. 따라서 해당 명령을 열 때마다 모든 명령이 실행됩니다.

II. PATH 환경 변수에 배치 및 항목을 작성하십시오.

  1. 이 매크로를 사용하여 배치를 생성하고 알려진 위치 (예 : c : \ apps \ mycmd.bat)에 저장하십시오.
  2. 제어판> 시스템> 고급 구성> 고급> 환경 변수로 이동하십시오.
  3. 사용자 또는 시스템 항목에서 PATH라는 변수를 검색하십시오. 그것을 두 번 클릭하고 끝에 ";"를 삽입하십시오. BAT 경로 (예 : "c : \ apps \"=> "previous_string; c : \ apps \"), Ok 및 Ok.
  4. 따라서 cmd (또는 BAT 파일)를 사용하는 경우 생성 된 경로 (예 : "c : \ apps")에 BAT 이름을 입력하여 명령을 실행하십시오 (예 : "myapps"를 입력하여 이러한 대체 명령을 실행).

1
"start / separate"를 시도했지만 환경 변수 만 저장합니다 (doskey 명령의 대체는 아님) ... "set"명령은 열린 프롬프트에만 유효하지만 "setx"를 사용하여 시스템에 저장할 수 있습니다 또는 사용자 환경 변수 "영원히". 도스 키 자막을 "영구적으로"시스템에 저장하거나 모든 Windows 시작에 저장할 수있는 방법이 있는지 모르겠습니다. 나는 내 방식을 선호합니다 ...
kokbira
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.