Windows 명령 줄에서 별칭을 설정하는 방법?


60

나는 bash에서 일하고 별칭에서 많은 것을 얻었습니다. Windows 명령 행에 상응하는 방법이 있습니까?

나는 리눅스 환경을 시뮬레이트하고 싶지 않기 때문에 cygwin은 선택이 아니다. 아주 긴 명령에 대한 바로 가기가 필요합니다. cd a_very_long_path.


5
당신은 doskey (이전 MS DOS doskey가 아닌 이름에 속지 마십시오.) 용도 doskey /? 자세한 내용은. 그것 이외에, 나는 두려워,이 질문은 주제에서 여기에서이다.
Christian.K

좋은 코멘트, 고마워. @ Christian.K
StarPinkER

가능한 중복 Windows 명령 프롬프트에서 현재 위치에서 기본 디렉토리로 경로를 변경하는 명령이 있습니까? 구체적으로 내 대답 명령 프롬프트가 열릴 때 DOSKey 매크로를 자동로드 할 수있는 방법을 알고 있어야합니다.
Karan

관련 + doskey를 영구 보존하는 방법 수퍼 유저 /questions/49170/...
laggingreflex

답변:


53

Christian.K는 자신의 의견에 DOSKEY 명령을 사용하여 별칭과 유사한 매크로를 정의 할 수 있다고 말했습니다.

doskey macroName=macroDefinition

매크로 매개 변수는 다음을 통해 정의에서 참조됩니다. $ 접두사 위치 : $1 ...을 통하여 $9$* 모든.

자세한 내용은 doskey 기술 문서 , 또는 입력 doskey /? 또는 help doskey 자세한 내용은 명령 줄에서 확인하십시오.

그러나 DOSKEY 매크로에는 심각한 제한이 있습니다.

  • 매크로는 대화 형 명령 줄에서만 작동하며 배치 스크립트 내에서 작동하지 않습니다.
  • 파이프 양쪽에서 사용할 수 없습니다. 둘 다 someMacro|findstr '^'dir|someMacro 실패.
  • FOR / F 명령 내에서 사용할 수 없습니다. for /f %A in ('someMacro') do ... 실패하다

제한 사항이 너무 커서 DOSKEY 매크로를 거의 사용하지 않습니다.

분명히 매크로 대신 배치 스크립트를 만들 수 있으며 스크립트 위치가 PATH에 있는지 확인할 수 있습니다. 그러나 다른 스크립트에서 스크립트를 사용하려면 각 스크립트에 CALL을 접두어로 사용해야합니다.

길고 자주 사용되는 명령에 대해 간단한 변수 "매크로"를 만들 수 있지만 구문을 사용하려면 매크로를 확장해야하므로 입력하기가 다소 번거롭습니다.

정의:

set "cdMe=cd a_very_long_path"

사용법 (명령 줄 또는 스크립트에서)

%cdMe%

고마워, 배치 스크립트 내에서 작업 할 수있는 방법이 있습니까?
StarPinkER

@JermaineXu - DOSKEY 매크로가 없습니다. 원유 대안에 대한 업데이트 된 답변을 참조하십시오.
dbenham

2
두 번째 솔루션의 장점은 파이프가 작동한다는 것입니다. 파이썬에서 매크로를 사용하려면 doskey가있는 첫 번째 솔루션이 작동하지 않습니다.
CEO at Apartico

@ UnhandledException - 당신 말이 맞아요! 배치 지원이 없기 때문에 DOSKEY 매크로를 피할만큼 충분하다고 생각한 적이 없습니다. 또한 FOR / F IN () 절에서 명령으로 사용할 수 없습니다.
dbenham

1
@UnhandledException - 귀하의 정보를 포함하도록 답변을 업데이트했습니다. 감사.
dbenham

12

배치 스크립트를 만들어 경로에 저장할 수 있습니다.

리눅스에서는 스크립트를 만들어서 폴더에 추가합니다. ~/bin 창문에서도 똑같이 할 수 있습니다.

더하다 %USERPROFILE%\bin 너의 ~에게 PATH 환경 변수. 그런 다음 스크립트를 저장하십시오.

quickcd.cmd

@echo off
cd a_very_long_path

이제 입력 할 수 있습니다. quickcd 명령 줄에서.

스크립트를 사용하여 호출 할 수도 있습니다. call 기능

call quickcd

11

SUBST

만약 당신이 정말로 이런 일을하려고한다면 :

기음: cd \ users \ myLoginID \ documents \ clients \ MTV \ strategy \ roadmap \ deliverable \ final

subst 명령을 사용하여 긴 경로를 별도의 드라이브 문자에 매핑 할 수 있습니다

subst m : c : \ users \ myLoginID \ documents \ clients \ MTV \ strategy \ loadmap \ deliverable \ final

그런 다음 해당 폴더로 이동하려면 명령 행에 m :을 입력하면됩니다.

이 doskey의 장점은 모든 배치 프로그램에서 작동하고 Windows 내의 모든 파일 대화 상자에 표시된다는 것입니다.

매핑을 더 이상 원하지 않는 경우 :

subst m : / D


내가 하나 이상의 투표를 할 수 있다면 ... 완벽한 해결책 ...
Anindya Chatterjee

2
나도 이것을 좋아하지 만 드라이브 문자를 먹지는 않는다.
ggb667

8

Windows에서 사용하는 것과 동일한 트릭을 사용할 수 있습니다. 환경 변수 (또는 배치 컨텍스트의 변수 만)를 설정합니다. 예를 들어, 환경 변수 % windir % (그리고 몇몇 다른 것들) 그래서 당신은

cd C:\Windows\

또는

cd %windir%

같은 일을합니다. 그래서 모두, 당신은해야합니다 :

set "mydir=C:\very\long\path\to\my\data\"

그 후에는 (어디에서든지) 할 수 있습니다.

dir %mydir%

또는

cd %mydir%

또는 당신이 원하는 무엇이든지.


1
그것은 티켓 @stephan입니다!
jbchurchill

1

필자는 디렉터리 변경을 위해 특별히 "별칭"을 만들었습니다. 기본적으로 나는 fav.bat PATH에 폴더에 넣으십시오 (예 : C : \ MyBatches).

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

그런 다음 사전 정의 된 폴더로 바로 이동할 수 있습니다. 나는 그 기술에 대한 전체 기사를 썼다. 이리 .


1

Linux와 달리 Windows에서는 별칭이 인수를 사용할 수 있으며 해당 정의에 해당 인수를 할당하는 매개 변수를 지정할 수 있습니다.

내부 내장 명령은 다음과 같습니다. 도스 키 즉, 외부 실행 파일이 아닙니다. %SystemRoot%\System32 그러나 cmd.exe 그 자체는 %SystemRoot% 또는 %Windir% 둘 다 C:\Windows 기본적으로 폴더입니다.

Doskey는 많은 다른 것들 중에서 별칭을 정의합니다. Windows 용어에서는 별명을 매크로라고합니다. 사용하는 별칭을 설정하려면

doskey alias=command $1 $2 ... $9 or $* (to catch them all) 

이리 $1 첫 번째 인수를 가리키며 $* 모든 인수를 가리 킵니다.

나는 항상 사용했다. $* 큰 따옴표 $1 특수 문자, 즉 분리 자 (명령)로 취급되는 공백을 생략하는 단 하나의 인수가있는 경우.

또한, 별칭 별도의 파일에있는 매크로 LinuxAliases.macro 소스를 사용하여

doskey /macrofile=LinuxAliases.macro

현재 파일에 정의 된 모든 별칭을로드합니다. 세션 오직, 당신이 의미 할 때 exit ~ 중 cmd.exe 프로세스 ( 껍질 및 명령 프롬프트), 그들은 사라 졌어요.

영구 별칭을 사용하려면 AutoRun 또는 AutoCommand 등의 regedit 키에 전체 명령을 입력 할 수 있습니다. 이제는 매크로 파일의 내부 구문과 함께 기억할 수없는 내용이 있습니다. P


여기에 공무원 , 심지어는 ...보다 나은 명령에 대한 문서.


0

동일한 드라이브 (예 : 아니요)에 있으면 D: 그때 cd D:\somedir\ 필요합니다.

나의 경우에는, 기음: 시스템 파일을 보유하고 있지만 모든 작업이 켜져 있습니다. 디:

2 개 부품. 먼저 배치 파일을 사용하여 작업 디렉토리를 설정하십시오.

의 말을하자 localprofile.cmd . 이들 중 여러 개를 가질 수 있으며 필요에 따라 실행하면됩니다.

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

방금 설정 한 환경 변수에 따라 다른 명령 파일을 사용하여 이동하십시오.

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

그리고 약간의 샘플 사용 :

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd 자체가 북마크 된 디렉토리 목록을 보여 주어야합니다. 그것은 작동하지만 확실하지 왜이 "예기치 않은 cd"메시지를 받고있다.

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper> 

보통 .cmd 배치

디렉토리 탐색과는 별도로 foo.cmd PATH 어딘가에 별칭으로 많이 작용할 수 있습니다. Linux / OSX 쉘과는 달리 cmd 파일은 환경 변수와 세션에 영향을 미칠 수 있으므로 출처 그들.

나는 cdbin.cmd 예를 들면 다음과 같습니다.

d:
cd \home\bin

그리고 이것은 pseudo-grep입니다. grep.cmd

findstr -n %1 %2

(어떤 정렬 / + 2 / + 10 의미)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):                       

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.