프로그램 디렉토리로 이동하는 방법? | cd폴더

프로그램 디렉토리 (예 : git)로 이동해야합니다. where git | cd폴더 대신 파일을 반환하기 때문에 작동하지 않습니다. 그것을 달성하는 올바른 방법은 무엇입니까?



답변

CMD 파일에서이를 수행하는 두 가지 방법은 다음과 같습니다.

for /f "delims=" %%i in ('where %1') do cd /d "%%~dPi."

또는 cmd에는 이미 비슷한 기능이 내장되어 있으므로 WHERE 명령을 모두 제거 할 수 있습니다.

cd /d "%~dP$PATH:1."

FindExe.cmd와 같은 경로에 원하는 행을 CMD 파일에 넣고 실행하십시오 findexe calc.exe. 명령 줄 (CMD 파일이 아닌)에서 대화 형으로 실행하려면 다음과 같이 붙어 있다고 생각합니다.

for /f "delims=" %i in ('where calc.exe') do cd /d "%~dPi."

.. 적절한 명령으로 calc.exe 를 대체 합니다.

궁금한 경우 시도한 방식이 두 가지 이유로 작동하지 않습니다.

  1. WHERE파일 이름을 포함한 전체 경로를 반환합니다. 파일 이름을 원하지 않습니다.
  2. cd 파이프 입력을받지 않습니다.

답변

프로그램 디렉토리로 어떻게 가나 요?

명령 줄에서 :

for /f "usebackq tokens=*" %a in (`where git`) do %~da && cd %~dpa

배치 파일에서 :

for /f "usebackq tokens=*" %%a in (`where git`) do %%~da && cd %%~dpa

의 의견에 따라 barlopdo부분에서 간단하게 할 수 있습니다 %%~da && cd %%~dpacd /d %%~dpa.


추가 자료

  • Windows CMD 명령 행의 AZ 색인 -Windows cmd 행과 관련된 모든 것에 대한 훌륭한 참조 자료.
  • for / f- 다른 명령의 결과에 대한 루프 명령.
  • parameters- 명령 행 인수 (또는 매개 변수)는 배치 스크립트로 전달되는 모든 값입니다.


답변

for수정 자 만 사용 하면 (빠르고 컴팩트하며 where사용할 수없는 경우에도 작동 함 ) pushd원점으로 돌아갈 수 있습니다.
for %i in (git.exe) do pushd %~dp$PATH:i

(방금 GuitarPicker가 유사하지만 정확히 동일하지는 않은 솔루션을 제안하는 것을 보았습니다 …)


답변