나는 bash에서 일하고 별칭에서 많은 것을 얻었습니다. Windows 명령 행에 상응하는 방법이 있습니까?
나는 리눅스 환경을 시뮬레이트하고 싶지 않기 때문에 cygwin은 선택이 아니다. 아주 긴 명령에 대한 바로 가기가 필요합니다. cd a_very_long_path
.
나는 bash에서 일하고 별칭에서 많은 것을 얻었습니다. Windows 명령 행에 상응하는 방법이 있습니까?
나는 리눅스 환경을 시뮬레이트하고 싶지 않기 때문에 cygwin은 선택이 아니다. 아주 긴 명령에 대한 바로 가기가 필요합니다. cd a_very_long_path
.
답변:
Christian.K는 자신의 의견에 DOSKEY 명령을 사용하여 별칭과 유사한 매크로를 정의 할 수 있다고 말했습니다.
doskey macroName=macroDefinition
매크로 매개 변수는 다음을 통해 정의에서 참조됩니다. $
접두사 위치 : $1
...을 통하여 $9
과 $*
모든.
자세한 내용은 doskey 기술 문서 , 또는 입력 doskey /?
또는 help doskey
자세한 내용은 명령 줄에서 확인하십시오.
그러나 DOSKEY 매크로에는 심각한 제한이 있습니다.
someMacro|findstr '^'
과 dir|someMacro
실패. for /f %A in ('someMacro') do ...
실패하다 제한 사항이 너무 커서 DOSKEY 매크로를 거의 사용하지 않습니다.
분명히 매크로 대신 배치 스크립트를 만들 수 있으며 스크립트 위치가 PATH에 있는지 확인할 수 있습니다. 그러나 다른 스크립트에서 스크립트를 사용하려면 각 스크립트에 CALL을 접두어로 사용해야합니다.
길고 자주 사용되는 명령에 대해 간단한 변수 "매크로"를 만들 수 있지만 구문을 사용하려면 매크로를 확장해야하므로 입력하기가 다소 번거롭습니다.
정의:
set "cdMe=cd a_very_long_path"
사용법 (명령 줄 또는 스크립트에서)
%cdMe%
배치 스크립트를 만들어 경로에 저장할 수 있습니다.
리눅스에서는 스크립트를 만들어서 폴더에 추가합니다. ~/bin
창문에서도 똑같이 할 수 있습니다.
더하다 %USERPROFILE%\bin
너의 ~에게 PATH
환경 변수. 그런 다음 스크립트를 저장하십시오.
quickcd.cmd
@echo off
cd a_very_long_path
이제 입력 할 수 있습니다. quickcd
명령 줄에서.
스크립트를 사용하여 호출 할 수도 있습니다. call
기능
call quickcd
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
Windows에서 사용하는 것과 동일한 트릭을 사용할 수 있습니다. 환경 변수 (또는 배치 컨텍스트의 변수 만)를 설정합니다. 예를 들어, 환경 변수 % windir % (그리고 몇몇 다른 것들) 그래서 당신은
cd C:\Windows\
또는
cd %windir%
같은 일을합니다. 그래서 모두, 당신은해야합니다 :
set "mydir=C:\very\long\path\to\my\data\"
그 후에는 (어디에서든지) 할 수 있습니다.
dir %mydir%
또는
cd %mydir%
또는 당신이 원하는 무엇이든지.
필자는 디렉터리 변경을 위해 특별히 "별칭"을 만들었습니다. 기본적으로 나는 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
그런 다음 사전 정의 된 폴더로 바로 이동할 수 있습니다. 나는 그 기술에 대한 전체 기사를 썼다. 이리 .
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
동일한 드라이브 (예 : 아니요)에 있으면 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):
비슷한 질문이 StackOverflow에 게시되었으며 좋은 해결책은이 주석에있었습니다. https://stackoverflow.com/a/21040825/2505342
doskey
(이전 MS DOS doskey가 아닌 이름에 속지 마십시오.) 용도doskey /?
자세한 내용은. 그것 이외에, 나는 두려워,이 질문은 주제에서 여기에서이다.