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:
-
WHERE
retorna o caminho completo, incluindo o nome do arquivo. Você não quer o nome do arquivo. -
cd
não aceita entrada canalizada.