如何进入程序目录?

如何进入程序目录?

我需要转到程序目录(例如 git)。where git | cd不起作用,因为它返回文件而不是文件夹。实现该目标的正确方法是什么?

答案1

以下是通过 CMD 文件执行此操作的两种方法:

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

或者您可以完全消除 WHERE 命令,因为 cmd 已经内置了类似的功能:

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

将首选行放在路径中的 CMD 文件中,例如 FindExe.cmd,然后运行findexe calc.exe。如果您想从命令行(而不是在 CMD 文件中)以交互方式运行它,我认为您只能这样做:

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

.. 替代计算程序使用适当的命令。

如果您感到疑惑,您尝试的方法之所以不起作用有两个原因:

  1. WHERE返回包含文件名的完整路径。您不需要文件名。
  2. cd不接受管道输入。

答案2

如何进入程序目录?

从命令行:

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

从批处理文件:

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

根据巴洛普,该do部分可以从简化%%~da && cd %%~dpacd /d %%~dpa


进一步阅读


答案3

仅使用for修饰符(更快,更紧凑,并且在where不可用时也能工作)pushd因此可以返回原点:
for %i in (git.exe) do pushd %~dp$PATH:i

(我刚刚注意到 GuitarPicker 提出了类似但不完全相同的解决方案……)

相关内容