Como ir para um diretório de programas?

2

Eu preciso ir para um diretório de programa (por exemplo, git). where git | cd não funciona, porque retorna um arquivo em vez de uma pasta. Qual é a maneira correta de conseguir isso?

    
por PHPst 13.04.2015 / 13:22

3 respostas

3

Aqui estão duas maneiras de fazer isso a partir de um arquivo CMD:

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

ou você pode eliminar o comando WHERE completamente, já que o cmd tem um recurso semelhante já incorporado:

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

Coloque a linha preferida em um arquivo CMD em seu caminho, como FindExe.cmd, e execute apenas findexe calc.exe . Se você quiser executá-lo interativamente a partir da linha de comando (não em um arquivo CMD), acho que você está preso com:

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

.. substituindo calc.exe pelo comando apropriado.

Caso você esteja se perguntando, a maneira como você tentou não funciona por dois motivos:

  1. WHERE retorna o caminho completo, incluindo o nome do arquivo. Você não quer o nome do arquivo.
  2. cd não aceita entrada canalizada.
por 13.04.2015 / 17:04
1

Como eu vou para um diretório de programas?

Da linha de comando:

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

De um arquivo em lotes:

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

De acordo com o comentário de barlop , a parte do pode ser simplificada de %%~da && cd %%~dpa para cd /d %%~dpa .

Leitura Adicional

por 13.04.2015 / 16:46
0

usando somente modificadores for (mais rápido, mais compacto e também funciona se where não estiver disponível) e pushd para que seja possível voltar à origem: for %i in (git.exe) do pushd %~dp$PATH:i

(eu notei que o GuitarPicker propôs uma solução similar, mas não exatamente a mesma, ...)

    
por 17.04.2015 / 18:26