답변:
예를 들어 다음을 저장하십시오. mycd.bat
당신의 길 어딘가에 :
@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
cd /d %OLDPWD%
set OLDPWD=%cd%
) else (
cd /d %*
if not errorlevel 1 set OLDPWD=%cd%
)
그런 다음 항상 디렉토리와 드라이브를 변경 하는 mycd
대신 사용하십시오 cd
.
또는 doskey
매크로를 사용하십시오 .
C:\>doskey cd=mycd $*
단주의해야 할 점은 당신이 사이의 공간을 생략하는 경우입니다 cd
그리고 ..
나 \
, 당신의 내장 버전을 얻을 것이다 cd
되지 않은 doskey
매크로를 ... 그리고 당신은 여전히 사용하지 기억해야한다 C:
, D:
변화 드라이브 등.
푸시 및 팝을 사용할 수 있습니다.
C : \ WINDOWS> pushd \ C : \> popd C : \ WINDOWS>
pushd/popd
당신은 오류의 가능성을 배려해야한다 . 스크립트에서 pushd
존재하지 않는 디렉토리는 스택에서 끝나지 않지만 popd
한 레벨을 종료 할 때 : 변수가 올바르게 채워지지 않음, missprint, 잘못된 드라이브 ... 다른 디렉토리에 있다고 생각합니다 파일 / 디렉토리를 삭제할 때와 같은 심각한 문제가있는 것으로부터. 재난 (리눅스 구문) : cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf *
당신은 A를 믿지만 너무 늦습니다. 모든 홈 디렉토리가 사라졌습니다.
bash의 정확한 동작을 원한다면 bash를 사용하지 않는 이유는 무엇입니까? 나는 한 Cygwin에서 설치하고 아주 좋은 것입니다. 유닉스 도구를 고수하지는 않습니다. 모든 실행 파일을 행복하게 호출합니다. 들어 cmd.exe
내장 매크로는 별칭을 만들 수 있습니다 :
hugh@comp07 ~/testdir
$ alias cm='cmd /c'
hugh@comp07 ~/testdir
$ cm dir
Volume in drive C has no label.
Volume Serial Number is AC2A-8378
Directory of C:\cygwin\home\hugh\testdir
18/05/2010 02:02 PM <DIR> .
18/05/2010 02:02 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 1,365,155,840 bytes free
hugh@comp07 ~/testdir
$
목표가 무엇인지에 따라 'cmd'를 수행하여 새 cmd 세션을 시작하고 디렉토리를 이동 한 다음 원하는 것을 수행 할 수 있습니다. 새 세션을 시작했습니다.
허용되는 답변은 요구 사항에 매우 적합합니다. 나는 종종 단지 두 개 (현재와 이전) 대신 많은 최근 디렉토리 사이를 전환해야한다.
그래서 최근에는 일상적인 일을 더 쉽게하기 위해 배치를 만들었습니다. https://gist.github.com/programus/2d2738b2a746140186f7738b678bdcec
cdx :
. 감사! 가장 많이 답한 답변이어야합니다.