프로그램 디렉토리 (예 : 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 를 대체 합니다.
궁금한 경우 시도한 방식이 두 가지 이유로 작동하지 않습니다.
WHERE
파일 이름을 포함한 전체 경로를 반환합니다. 파일 이름을 원하지 않습니다.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
의 의견에 따라 barlop 의 do
부분에서 간단하게 할 수 있습니다 %%~da && cd %%~dpa
로 cd /d %%~dpa
.
추가 자료
- Windows CMD 명령 행의 AZ 색인 -Windows cmd 행과 관련된 모든 것에 대한 훌륭한 참조 자료.
- for / f- 다른 명령의 결과에 대한 루프 명령.
- parameters- 명령 행 인수 (또는 매개 변수)는 배치 스크립트로 전달되는 모든 값입니다.
답변
for
수정 자 만 사용 하면 (빠르고 컴팩트하며 where
사용할 수없는 경우에도 작동 함 ) pushd
원점으로 돌아갈 수 있습니다.
for %i in (git.exe) do pushd %~dp$PATH:i
(방금 GuitarPicker가 유사하지만 정확히 동일하지는 않은 솔루션을 제안하는 것을 보았습니다 …)